题目大意:优先级低的消息先输出
优先级一样则输出先进入队列的消息
需要这样一种数据结构
满足先进先出
能够按一定的规则对内部元素排序
最终决定使用优先队列
注意:优先队列不同于普通的队列,并不满足先进先出规则,所以需要手动添加一个数据index来记录消息的先后顺序
#include<iostream>
#include<queue>
#include<string>
#include<vector>
#include<functional>
using namespace std;
class Message {
public:
int priority,parameter,index;
string name;
};
bool operator<(const Message& a,const Message& b) {
if(a.priority!=b.priority) return a.priority>b.priority;
else return a.index>b.index;
}
int main() {
priority_queue<Message> m;
string t;
int i=0;
while(cin>>t) {
if(t[0]=='G') {
if(m.empty())
cout<<"EMPTY QUEUE!"<<endl;
else {
cout<<m.top().name<<" "<<m.top().parameter<<endl;
m.pop();
}
} else {
Message m1;
cin>>m1.name>>m1.parameter>>m1.priority;
m1.index=++i;
m.push(m1);
}
}
return 0;
}