原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1509
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2724
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
struct Message
{
char Name[100];
int Data;
int Priority;
int index;//杭电的不加这个会WA
bool operator <(const Message &a)const
{
if(a.Priority!=Priority)
return a.Priority<Priority;
return a.index<index;
}
};
priority_queue<Message> v;
int main()
{
char command[100];
Message message;
int k=0;
while(scanf("%s",command)!=EOF)
{
if(strcmp(command,"GET")==0)
{
if(v.size()==0)
printf("EMPTY QUEUE!\n");
else
{
printf("%s %d\n",v.top().Name,v.top().Data);
v.pop();
}
}
else if(strcmp(command,"PUT")==0)
{
scanf("%s%d%d",message.Name,&message.Data,&message.Priority);
message.index=++k;
v.push(message);
}
}
return 0;
}