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