您的位置:首页 > 其它

ZOJ 3499 M - Median

2016-06-23 20:08 387 查看
M - Median
ZOJ 3499
Description
A median is described as the numeric value separating the higher half of a list, from the lower half. The median of a finite list of numbers can be found by arranging all the elements from lowest value to highest value and picking the middle one. If there is an even number of elements, the median is then defined to be the mean of the two middle values. Now, could you write a program to help to find the median?
Input
There are multiple test cases. The first line of input is an integer T ≈ 100 indicating the number of test cases.
The first line of each test is an integer 0 < n < 500 indicating the number of elements. The second line consists of n numbers, the elements of the list, whose absolute values are smaller than 1,000,000.
Output
For each test case, output the median, with 3 decimal digits.
Sample Input
3
1
0.0
4
1.0 1000.3 100.2 10.1
5
2.0 3.0 5.0 7.0 11.0
Sample Output
0.000
55.150
5.000
References
 http://en.wikipedia.org/wiki/Median 来源: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=118191#problem/M


#include <bits/stdc++.h>
using namespace std;
int cmp(const void *a,const void *b)
{
return *(double *)a < *(double *)b? 1:0;
}
double A[500];
int main()
{
//freopen("F:\\test.txt","r",stdin);
int T;cin>>T;
for(int i=1,N;i<=T;i++)
{
scanf("%d",&N);
for(int i=1;i<=N;i++) scanf("%lf",&A[i]);
qsort(A+1,N,sizeof(A[0]),cmp);
if(N%2) printf("%.3lf\n",A[N/2+1]);
else printf("%.3lf\n",(A[N/2+1]+A[N/2])/2);
}
return 0;
}


来源: http://acm.hust.edu.cn/vjudge/contest/viewSource.action?id=6158994
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: