POJ 3481 set水过
题意:1表示插入客户K,他的优先级是P(相当于大小),2表示输出当前优先级最高的客户(即找出最大值),并且删除。3同理输出最低级的。
这题可以用splay treap AVL SBT …… (可是我并不会)
这里set水过。。
#include <set>
#include <cstdio>
using namespace std;
set<pair<int,int> >s;
set<pair<int,int> >::iterator it;
int main(){
int p,xx,yy;
while(scanf("%d",&p)&&p){
if(p==1){scanf("%d%d",&xx,&yy),s.insert(make_pair(yy,xx));continue;}
else if(s.empty()){puts("0");continue;}
else if(p==3) it=s.begin();
else it=--s.end();
printf("%d\n",(*it).second),s.erase(it);
}
}