给大家推荐个靠谱的公众号程序员探索之路,大家一起加油
STL优先队列的详细描述
http://blog.csdn.net/yueloveme/article/details/47106639
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1873
#include<stdio.h>
#include<queue>
using namespace std;
struct node
{
int q,k;
friend bool operator<(node a,node b)//先比较q的大小,如果相等就按k的大小排列
{
if(a.q<b.q) return true;
if(a.q==b.q&&a.k>b.k) return true;
return false;
}
};
priority_queue<node>que[4];//队列数组
int main()
{
int n;
while(~scanf("%d",&n))
{
while(!que[1].empty())//清空
que[1].pop();
while(!que[2].empty())
que[2].pop();
while(!que[3].empty())
que[3].pop();
int h=0,a,c,i=1,m[2000];
char s[4];
node b;
for(int j=0;j<n;j++)
{
scanf("%s",s);
if(s[0]=='I')//进入
{
scanf("%d %d",&a,&c);
b.q=c;
b.k=i++;
que[a].push(b);
}
else//判断输出
{
node b;
scanf("%d",&a);
if(que[a].empty()) printf("EMPTY\n");
else{printf("%d\n",que[a].top().k);
que[a].pop();}
}
}
}
return 0;
}