ZOJ 2724 Windows Message Queue(优先队列)
题意:输入GET,队列为空则输出空,否则输出最优先的数据(所谓最优先,就是优先值最小的一个),若输入PUT,输入三个数据,分别是名字,参数,和优先值。
#include<stdio.h> #include<string.h> #include<algorithm> #include<queue> using namespace std; struct Node { char name[100]; int parameter,priority; }node; bool operator <(const Node &a,const Node &b) { if(a.priority>b.priority) return 1;//这里为什么是大于而不是小于,没懂? else return 0; } int main() { priority_queue<Node>Q;//定义队列为结构体 char str[10]; while(scanf("%s",str)!=EOF) { if(!strcmp(str,"GET")) { if(Q.empty()) printf("EMPTY QUEUE!\n"); else { printf("%s %d\n",Q.top().name,Q.top().parameter); Q.pop(); } } else { scanf("%s %d %d",node.name,&node.parameter,&node.priority); Q.push(node); } } return 0; }