0
点赞
收藏
分享

微信扫一扫

ZOJ 3499 Median

洛茄 2022-11-10 阅读 78


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

The first line of each test is an integer 0 < n < 500 indicating the number of elements. The second line consists of n

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​​

简单题,求中位数



#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define ms(x,y) memset(x,y,sizeof(x))
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define per(i,j,k) for(int i=j;i>=k;i--)
#define loop(i,j,k) for (int i=j;i!=-1;i=k[i])
#define inone(x) scanf("%d",&x)
#define intwo(x,y) scanf("%d%d",&x,&y)
#define inthr(x,y,z) scanf("%d%d%d",&x,&y,&z)
typedef long long LL;
const int low(int x) { return x&-x; }
const int INF = 0x7FFFFFFF;
const int mod = 1e9 + 7;
const int N = 1e5 + 10;
int T, n;
double a[N];

int main()
{
for (inone(T); T--;)
{
inone(n);
rep(i, 1, n) scanf("%lf", &a[i]);
sort(a + 1, a + n + 1);
if (n & 1) printf("%.3lf\n", a[n / 2 + 1]);
else printf("%.3lf\n", (a[n / 2] + a[n / 2 + 1]) / 2);
}
return 0;
}





举报

相关推荐

0 条评论