优先队列的应用
#include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; #define maxn 10010 struct Node { string name; int rp; friend bool operator <(Node a,Node b) { if(a.rp != b.rp) return a.rp > b.rp; else return a.name < b.name; } }; priority_queue<Node>que[maxn]; int main() { int n,m; while(~scanf("%d%d",&n,&m)) { Node tmp; for(int i = 1;i <= n;i++) { int k; scanf("%d",&k); while(!que[i].empty()) que[i].pop(); while(k--) { cin>>tmp.name>>tmp.rp; que[i].push(tmp); } } while(m--) { char op[25]; scanf("%s",op); if(!strcmp(op,"GETON")) { int id; scanf("%d",&id); cin>>tmp.name>>tmp.rp; que[id].push(tmp); } else if(!strcmp(op,"JOIN")) { int i1,i2; scanf("%d%d",&i1,&i2); while(!que[i2].empty()) { tmp = que[i2].top(); que[i2].pop(); que[i1].push(tmp); } } else { int id; scanf("%d",&id); tmp = que[id].top(); que[id].pop(); cout<<tmp.name<<endl; } } } return 0; }
时间: 2024-10-13 11:31:32