#include <set>
#include <algorithm>
#include <iostream>
#include <cstdio>
using namespace std;
struct node
{
int k;
int p;
bool operator <(const node &t) const
{
return p<t.p;
}
};
set<node>vis;
set<node>::iterator it;
int main()
{
int op;
while(scanf("%d",&op))
{
if(op==0) break;
else if(op==1)
{
int p,k;
scanf("%d%d",&k,&p);
vis.insert({k,p});
}
else
{
if(vis.empty()) printf("0\n");
else
{
if(op==2)
{
it=--vis.end();
printf("%d\n",it->k);
vis.erase(it);
}
else
{
it=vis.begin();
printf("%d\n",it->k);
vis.erase(it);
}
}
}
}
return 0;
}
Double Queue
最新推荐文章于 2022-09-08 09:46:42 发布