POJ2388

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;
}


你可能感兴趣的:(ACM)