本题纯优先队列:注意输出时如果两个优先级相同输出先输入的。
代码:
#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;
}