题意:输入首先分为两种,GET表示从消息队列中取出一个消息。PUT表示把一个消息放入消息队列,每一个消息包含三个部分:内容,参数和优先级(数字越小优先级越高)。输入亦按照此顺序进行
优先队列,cmp函数有点复杂,其他还好
#include<iostream>
#include<queue>
using namespace std;
struct str
{
string name;
long long int num;
long long int ans;
int rat;
} start[10];
struct cmp
{
bool operator()(str start1,str start2)
{
if(start1.ans!=start2.ans)
return start1.ans>start2.ans;
else
return start1.rat>start2.rat;
}
};
int main()
{
string s;
int i=0;
priority_queue<str,vector<str>,cmp>p;
while (!p.empty())
p.pop();
while (cin>>s)
{
if (s=="GET")
{
if (p.empty())
cout<<"EMPTY QUEUE!"<<endl;
else
{
cout<<p.top().name<<" "<<p.top().num<<endl;
p.pop();
}
}
else
{
cin>>start[0].name>>start[0].num>>start[0].ans;
start[0].rat=i;
p.push(start[0]);
i++;
}
}
return 0;