Description
Input
Output
Sample Input
7 IN 1 1 IN 1 2 OUT 1 OUT 2 IN 2 1 OUT 2 OUT 1 2 IN 1 1 OUT 1
Sample Output
2 EMPTY 3 1 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream>
#include <queue>
using namespace std;
struct node
{
int num;
int id;
};
bool operator <(const node &a,const node &b)//重载<运算符,指定优先规则
{
if(a.num==b.num)//如果num相同,id由小到大
return a.id>b.id;
else
return a.num<b.num;//num由大到小
}
int main()
{
int n;
int A,B;
char p[5];
int cnt;
struct node t;
while(~scanf("%d",&n))
{
cnt=1;
priority_queue<node>q[5];//定义结构体类型的优先队列
while(n--)
{
scanf("%s",p);
if(strcmp(p,"IN")==0)
{
scanf("%d %d",&A,&B);
t.num=B;
t.id=cnt++;
q[A].push(t);
}
else if(strcmp(p,"OUT")==0)
{
scanf("%d",&A);
if(!q[A].empty())
{
t=q[A].top();
q[A].pop();
printf("%d\n",t.id);
}
else
{
printf("EMPTY\n");
}
}
}
}
return 0;
}
原文:http://blog.csdn.net/u013486414/article/details/41147021