| input | output |
|---|---|
4 3 6 4 5 |
4.5 |
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
using namespace std;
priority_queue<int, vector<int>, greater<int> > pq;
int main(){
int n;
while(~scanf("%d",&n)){
int cnt = n/2+1;
while(!pq.empty()) pq.pop();
for(int i = 0; i < n; i++){
int d;
cin >> d;
if(pq.size()<cnt){
pq.push(d);
}
else if(pq.top()<d){
pq.pop();
pq.push(d);
}
}
double median;
if(n&1){
median = pq.top();
}else{
int a = pq.top(); pq.pop();
int b = pq.top();
median = (a*1.0+b*1.0)/2.0;
}
printf("%.1lf\n",median);
}
return 0;
}
URAL1306-Sequence Median(优先队列),布布扣,bubuko.com
URAL1306-Sequence Median(优先队列)
原文:http://blog.csdn.net/mowayao/article/details/38589853