主要学习优先队列的使用
#include <iostream>
#include <queue>//头文件
#include <cstdio>
//down 优先队列
using namespace std;
struct node//结构体的声明方式
{
int pri;
int num;//每个 进队人都给他一个(递增的)编号
friend bool operator <(node n1,node n2)//重载:含义是如果pri不同,则pri大的优先级高;如果相同,则看num,num小的优先级高
{
if(n1.pri==n2.pri) return n1.num>n2.num;
else return n1.pri<n2.pri;
}
};
int main()
{
int t,k;
node n;
char s[5];
while(scanf("%d",&t)!=EOF)
{
k=0;
priority_queue<node>q[4];//优先队列的声明
for(int i=0;i<t;i++)
{
cin>>s;
if(s[0]=='I')
{
int a,b;
cin>>a>>b;
n.num=++k;
n.pri=b;
q[a].push(n);//将此节点加入a号医生的队列
}
if(s[0]=='O')
{ int c;
cin>>c;
if(q[c].empty()) printf("EMPTY\n");
else {
n=q[c].top();
q[c].pop();
printf("%d\n",n.num);
}
}
}
}
return 0;
}