POJ2388 中位数
本题如其名,输入一个n,然后是n行,每行一个数,找所有数里面的中位数。
输入:1<=n<=10000,然后是n行,每行一个1到1000000之间的数。
输出:n个数中的中位数。
代码:
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn= 1000000+1000;
int a[maxn];
int main()
{
intm,n;
scanf("%d",&n);
m=n;
memset(a,0,sizeof(a));
while(m--)
{
int x;scanf("%d",&x);
a[x]++;
}
intcnt=0;
for(int i=1;i<maxn;i++)
{
cnt+=a[i];
if(cnt>=(n+1)/2)
{
printf("%d\n",i);
break;
}
}
return 0;
}