您的位置:首页 > 其它

【CDOJ 1339】郭大侠与线上游戏

2016-08-01 20:00 218 查看
http://acm.uestc.edu.cn/#/problem/show/1339

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<set>
#include<queue>
using namespace std;
int n;
set<int> l,r;
queue<int> q;
int main()
{
scanf("%d",&n);
int op = 0,val;
while(n--)
{
scanf("%d",&op);
switch(op)
{
case 1:
scanf("%d",&val);
q.push(val);
if(r.empty()){r.insert(val);}
else if(l.empty())
{
if(val>*r.begin())
{
l.insert(*r.begin());
r.erase(r.begin());
r.insert(val);
}
else l.insert(val);
}
else
{
if(val>=*r.begin())
{
if(r.size()==l.size())r.insert(val);
else
{
r.insert(val);
l.insert(*r.begin());
r.erase(r.begin());
}
}
else
{
if(r.size()==l.size())
{
l.insert(val);
r.insert(*l.rbegin());
l.erase(--l.end());
}
else l.insert(val);
}
}
break;
case 2:
val = q.front();
q.pop();
if(l.empty())r.erase(r.begin());
else
{
if(val>=*r.begin()){
if(r.size()==l.size()){
r.erase(r.lower_bound(val));
r.insert(*l.rbegin());
l.erase(--l.end());
}
else{
r.erase(r.lower_bound(val));
}
}
else
{
if(r.size()==l.size()){
l.erase(l.lower_bound(val));
}
else
{
l.erase(l.lower_bound(val));
l.insert(*r.begin());
r.erase(r.begin());
}
}
}
break;
case 3:
printf("%d\n",*r.begin());
break;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  set