hdu1873优先队列
1 #include<stdio.h> 2 #include<queue> 3 using namespace std; 4 struct node 5 { 6 int id; 7 int val; 8 friend bool operator< (node a,node b) 9 { 10 if(a.val!=b.val) 11 return a.val<b.val; 12 else 13 { 14 return a.id>b.id; 15 } 16 } 17 }; 18 int n; 19 int main() 20 { 21 int i,j; 22 char s[100]; 23 int num,set; 24 while(scanf("%d",&n)!=EOF) 25 { 26 num=1; 27 node temp; 28 priority_queue<node>q[5]; 29 for(i=1;i<=n;i++) 30 { 31 scanf("%s",s); 32 if(s[0]=='I') 33 { 34 scanf("%d %d",&set,&temp.val); 35 temp.id=num++; 36 q[set].push(temp); 37 } 38 else 39 { 40 scanf("%d",&set); 41 if(q[set].empty()) 42 { 43 printf("EMPTY\n"); 44 continue; 45 } 46 node exm=q[set].top(); 47 q[set].pop(); 48 printf("%d\n",exm.id); 49 } 50 } 51 } 52 }