考察优先队列,以及对队列的一系列操作
#include<iostream>
#include<queue>
#define maxn 10000+10
using namespace std;
struct stu
{
string name;
int rp;
friend bool operator<(stu x,stu y)
{
if(x.rp==y.rp) return x.name<y.name;
return x.rp>y.rp;
}
};
priority_queue<stu>mapp[maxn];
int n,m,t;
stu x;
int main()
{
cin.sync_with_stdio(false);
while(cin>>n>>m)
{
for(int i=1;i<=n;i++)
{
while(mapp[i].size()) mapp[i].pop();
cin>>t;
while(t--)
{
cin>>x.name>>x.rp;
mapp[i].push(x);
}
}
string cmd;
for(int i=1;i<=m;i++)
{
cin>>cmd;
if(cmd=="GETON")
{
int d;
cin>>d>>x.name>>x.rp;
mapp[d].push(x);
}
else if(cmd=="JOIN")
{
int d,f;
cin>>d>>f;
while(mapp[f].size())
{
x=mapp[f].top();
mapp[d].push(x);
mapp[f].pop();
}
}
else
{
int d;
cin>>d;
cout<<mapp[d].top().name<<endl;
mapp[d].pop();
}
}
}
return 0;
}