题意就是编一个输入输出队列,如果输入PUT,就输入字符串,优先级(数字),一个数字,存起来,如果输入GET,就把优先级最高的输出,优先级相同,则把先输入的输出。如果里面是空的,就输出空的队列。
思路是用自定义结构体存起来,重载小于号,使用优先队列,能让结构体按照优先级排序,然后根据题意输入。
要注意优先队列的使用和重载小于号。
代码:
#include<iostream>
#include<cmath>
#include<string>
#include<queue>
using namespace std;
struct que{
string a;
long long b;
long long c;
long long d;
};
priority_queue<que> q;
const bool operator<(const que &xx, const que &yy)
{
if (xx.c!=yy.c)
return xx.c> yy.c;
else return xx.d>yy.d;
}
int main()
{
string t;
long long dd=0,e=1,i,j,n,m,f=1,h=0,x,y=0;
que qu2,qu1;
while (cin>>t)
{ if (t[0]=='P') {
cin>>qu2.a>>qu2.b>>qu2.c;
qu2.d=dd;dd++;
q.push(qu2);
}
else {if (q.empty()) cout<<"EMPTY QUEUE!"<<endl;
else {qu1=q.top();
q.pop();
cout<<qu1.a<<" "<<qu1.b<<endl;
}
}
}
}