纸忧 @ 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更是错到马里亚纳海沟)
(而且,据说这题文末要有回车)