求中位数。又一水题- -!内存限制,开250000刚好超内存。所以开一半+1,后面的数插入后将最大的弹出。最后最大的一位或两位记为中间值。看了下优先队列。 priority_queue用法
#include <iostream>
#include <queue>
#include <cstdio>
using namespace std;
int main()
{
priority_queue<int> q;
int n;
scanf("%d",&n);
int x;
int i;
for(i= 0; i<=n/2; ++i )
{
scanf("%d",&x);
q.push(x);
}
for(;i<n;i++)
{
scanf("%d",&x);
q.push(x);
q.pop();
}
if(n%2==1)
printf("%.1f\n",(double)q.top());
else
{
double a;
a=q.top();
q.pop();
a+=q.top();
a/=2;
printf("%.1f\n",a);
}
return 0;
}