时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述 

国中生Chino总是做不完数学作业,Cocoa想来帮忙,但作业太多了,怎么也做不完。
Chino的数学作业由T(1\leq T\leq 100)T(1T100)张试卷组成,每张试卷上有n(1\leq n\leq 10^3)n(1n103)个数a_{1..n}(1\leq a\leq 5000)a1..n(1a5000),Chino需要算出这些数的极差和方差。极差是一个整数,方差是一个浮点数,要求保留到小数点后3位。
虽然题目很简单,但计算量对于Chino来说实在太大啦!你能帮一帮她吗?
P.S.:一个数列的极差是指数列中最大的数减去最小的数,方差是指算出数列中每个数与数列平均值之差的平方后,对其求和,再除以数列元素个数得到的结果。

输入描述:

					
输入的第一行有一个数T,表示试卷的数量;接下来的每2行,第一行有一个数n,表示当前试卷上数字的个数;第二行有n个数字a_iai,表示这张试卷上的每一个数。

输出描述:

对每张试卷,输出一行两个数,分别表示这些数字的极差和方差,中间用空格分开。其中极差是整数,方差是保留到小数点后3位的浮点数。
示例1

输入

复制
2
5
5 4 3 2 1
7
333 494 655 991 101 591 941

输出

复制
4 2.000
890 86075.959



#include<iostream>
using namespace std;
int main()
{
    int T,n,a[1005],x,y;
    cin>>T;
    while(T--)
    {
        cin>>n>>a[1];
        x=y=a[1];
        int s=a[1];
        for(int i=2;i<=n;i++)
        {
            cin>>a[i];
            x=max(x,a[i]);
            y=min(y,a[i]);
            s+=a[i];
        }
        cout<<x-y<<" ";
        double t=0,p=s*1.0/n;
        for(int i=1;i<=n;i++) t+=(a[i]-p)*(a[i]-p);
        printf("%0.3lf\n",t/n);
    }
    return 0;
    
}