Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5331 Accepted Submission(s): 2190
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
struct man{
int por;
int id;
friend bool operator< (man n1, man n2){//小于运算符重载
if(n1.por==n2.por) return n1.id>n2.id;//如果优先权相同,按id从小到大
else return n1.por<n2.por;
}
};
int N,cnt;
void solve()
{
cnt=1;
priority_queue<man>A[4];//队列不能放到全局,由于多case,必须每次使用时重定义一次来清空
int doc,ipor;
char s[5];
man c;
while(N--){
scanf("%s",s);
if(s[0]==‘I‘){
scanf("%d%d",&doc,&ipor);
c.por=ipor;
c.id=cnt++;
A[doc].push(c);
}
else{
scanf("%d",&doc);
if(A[doc].empty())
printf("EMPTY\n");
else{
printf("%d\n",A[doc].top().id);
A[doc].pop();}
}
}
}
int main()
{
while(~scanf("%d",&N))
solve();
}
原文:http://www.cnblogs.com/orchidzjl/p/4357904.html