考察优先队列,以及对队列的一系列操作
#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; }
原文:http://blog.csdn.net/zafkiel_nightmare/article/details/45170741