本题纯优先队列:注意输出时如果两个优先级相同输出先输入的。
代码:
#include<stdio.h> #include<string.h> #include<queue> using namespace std; struct zhang { char str[100]; int x,y,h; friend bool operator<(const zhang &a,const zhang &b) { if(a.x!=b.x) return a.x > b.x ; else return a.h > b.h; } }; int main() { char s[10]; int f=0; priority_queue<zhang>q; zhang current; while(scanf("%s",s)!=EOF) { if(strcmp(s,"GET")==0) { if(q.empty()) { printf("EMPTY QUEUE!\n"); } else { current=q.top(); printf("%s %d\n",current.str,current.y); q.pop(); } } else { scanf("%s%d%d",current.str,¤t.y,¤t.x); current.h=f++; q.push(current); } } return 0; }