运算符重载
#include<stdio.h>
#include<iostream>
#include<queue>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
struct node{
string name;
int par,pri,id;
friend bool operator< (node a,node b){
if(a.pri==b.pri)
return a.id >b.id;
else return a.pri >b.pri;
}
};
int main()
{
priority_queue <node> que;
char a[5];
int i=0;
while(~scanf("%s",a))
{
if(a[0]=='G')
{
if(que.empty())
printf("EMPTY QUEUE!
");
else
{
node m = que.top();
//printf("%s %d
",m.name,m.par);
cout<<m.name<<" "<<m.par<<endl;
que.pop();
}
}
if(a[0]=='P')
{
node t;
// scanf("%s%d%d",t.name,&t.par,&t.pri);
cin>>t.name>>t.par>>t.pri;
t.id=i++;
que.push(t);
}
}
return 0;
}