luogu P1168 中位数

由于看不懂poj的输出,就用luogu的对顶堆代替吧!

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
priority_queue<int,vector<int>,greater<int> >Q1;
priority_queue<int>Q2;
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;++i){
        int t;scanf("%d",&t);
        if(i==1||t>=Q1.top())Q1.push(t);
        else Q2.push(t);
        if(Q1.size()>Q2.size()+1){
            Q2.push(Q1.top());
            Q1.pop();
        }
        else if(Q2.size()>Q1.size()){
            Q1.push(Q2.top());
            Q2.pop();
        }
        if(i&1)
        printf("%d
",Q1.top());
    }
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/Dream-Runner/p/10133572.html