萌新求教 怎么炸了啊

P1168 中位数

Hiraeth @ 2019-04-08 00:00:25

#include<bits/stdc++.h>
using namespace std;
priority_queue<int> lq;
priority_queue<int,vector<int>,greater<int> > rq;
//两个队列 一个队列维护一半 始终保证两个队列的元素个数差为1 那么元素个数较多的队首元素即为区间中位数 
int n,p;
int main(){
    scanf("%d%d",&n,&p);
    lq.push(p);
    printf("%d\n",lq.top()); 
    for (int i=2;i<=n;i++){
        scanf("%d",&p);
        if (p<rq.top()) lq.push(p);
            else rq.push(p);    
        while (lq.size()-rq.size()>1) {
            rq.push(lq.top());
            lq.pop();
        }
        while (rq.size()-lq.size()>1){
            lq.push(rq.top());
            rq.pop();
        }
        if (i%2!=0){
            if (rq.size()>lq.size()) printf("%d\n",rq.top());
            else printf("%d\n",lq.top());
        } 
    }
    return 0;
}

by Sesame @ 2019-04-08 00:19:35

lq.top() 是成员函数,不能直接当变量使用。 都红名了就不要叫什么萌新了


by DARKSTALKING @ 2019-04-08 06:42:46

红名大佬请关照我们这些蓝名jr


by Hiraeth @ 2019-04-08 15:26:52

@Sesame 改成了tmp还是炸了啊


by youkasgs_wyb @ 2019-07-22 13:49:32

这题是什么意思我都不知道


|