您的位置:首页 > 其它

hduProblem-1873优先级队列的应用

2017-02-20 00:36 483 查看
#include <bits/stdc++.h>
using namespace std;

//结构体里面的成员,在默认情况下均是 public 的权限
struct node
{
int id;
int pri;
friend bool operator<(node x,node y)	//重载运算符 (friend bool operator()(node x,node y)这样不对)
{
if(x.pri==y.pri)
return x.id>y.id;	//">"表示在优先级相等的情况下,越来越大排序(即小的id在前)
else
return x.pri<y.pri;//"<"表示在优先级不等的情况下,越来越小排序(即大的pri在前)
}
};
int n,a,b;
char str[5];
int main()
{
while(scanf("%d",&n)!=EOF)	//等价于while(~scanf("%d",&n)
{
int num=1;
priority_queue<node> doctor[4];	//类似数组doctor[0],doctor[1],doctor[2](每一个都是优先级队列容器)
while(n--)						//缺省了两个参数,仿函数默认用<比较排序元素
{
scanf("%s",str);
if(str[0]=='I')
{
scanf("%d %d",&a,&b);
node temp;
temp.pri=b;temp.id=num;num++;
doctor[a].push(temp);
}
else
{
scanf("%d",&a);
if(!doctor[a].empty())
{
node temp=doctor[a].top();
printf("%d\n",temp.id);
doctor[a].pop();
}
else
{
puts("EMPTY");
}
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: