1. 程式人生 > >【Wannafly Daily】20170412 A 郭大俠與線上遊戲

【Wannafly Daily】20170412 A 郭大俠與線上遊戲

https://cn.vjudge.net/contest/158362#problem/A
對前一半後一半分別維護一個set,操作時做相應調整即可

#include<stdio.h>
#include<set>
#include<queue>
using namespace std;

int n,type,aim,q;
queue<int> Q;
set<int> S1,S2;
set<int>::iterator it;

inline void mt()
{
    if (n && S1.size()!=(n>>1
)) { if ((n>>1)<S1.size()) { it=S1.end(); it--; S2.insert(*it); S1.erase(it); } else { S1.insert(*S2.begin()); S2.erase(S2.begin()); } } } int main() { scanf
("%d",&q); for (;q--;) { scanf("%d",&type); if (type==1) { scanf("%d",&aim); Q.push(aim); n++; if (aim<*S2.begin()) S1.insert(aim); else S2.insert(aim); mt(); } if (type==2
) { aim=Q.front();Q.pop();n--; if (aim<*S2.begin()) S1.erase(aim); else S2.erase(aim); mt(); } if (type==3) printf("%d\n",*S2.begin()); } }