求助!!!麻烦大佬们了,哪里错了呜呜呜

P1168 中位数

纸忧 @ 2020-03-17 20:52:26

#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
priority_queue <int>q1;
priority_queue<int,vector<int>,greater<int> > q2;//小根堆
int a[100005];
int n;
int now;
int main()
{ 
    freopen("middle.in","r",stdin);
    freopen("middle.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=1;i<=n;i++)
    {
        if(i==1)
            now=a[i];
        else
        {
            if(a[i]<=now)
                q1.push(a[i]);
            else
                q2.push(a[i]);
        }
        if(q1.size()>q2.size()&&q1.size()-q2.size()>1)
        {
            q2.push(now);
            now=q1.top();
            q1.pop();
        }
        else if(q2.size()>q1.size()&&q2.size()-q1.size()>1)
        {
            q1.push(now);
            now=q2.top();
            q2.pop();
        }
        if(i%2==1)
            cout<<now<<" ";
    }
    return 0;
}

by Limit @ 2020-03-17 20:53:39

写个线段树不好吗


by 血色黄昏 @ 2020-03-17 20:54:26

为什么要freopen...


by BlueSu @ 2020-03-17 20:54:27

有必要用栈吗?


by BlueSu @ 2020-03-17 20:54:59

二重循环它不香吗


by TLE_Automat @ 2020-03-17 21:02:34

为什么加freopen?


by lndjy @ 2020-03-17 21:10:42

multiset不香吗?自带平衡树,常数小,操作简单


by qd_zhanghuali @ 2020-08-03 08:45:40

@纸忧 输出之间应该用回车隔开,不能用空格


by AMIRIOX無暝 @ 2021-02-11 08:50:40

楼上有些人在说啥啊 这不是对顶堆模板题吗


by xuekaiwen_emmm @ 2023-01-02 21:55:40

楼上兄弟,这个,貌似,据我了解,不是


by xuekaiwen_emmm @ 2023-01-02 21:58:45

size返回unsigned,没有负数,减法得强制转int

(如果用abs的话,不强制转int更是错到马里亚纳海沟)

(而且,据说这题文末要有回车)


|