// 题意:有t个团队的人在排队。每次来了一个新人之后,如果他有队友在排队,那么这个新人会插队到队友的身后。
// 要求支持三种指令:ENQUEUE x; DEQUEUE(队首出队); STOP。模拟这个过程,输出出队顺序
#include<cstdio> #include<cstring> #include<iostream> #include<string> #include<algorithm> #include<queue> #include<map> using namespace std; const int maxt = 1000 + 10; int main() { int t; int count=0; while(cin>>t && t) { count++; cout<<"Scenario #"<<count<<endl; map<int, int> team; for(int i=0;i<t;i++) { int tsize; cin>>tsize; for(int j=0;j<tsize;j++) { int element; cin>>element; team[element]=i; } } queue<int> q, q2[maxt]; string cmd; while(cin>>cmd && cmd!="STOP") { if(cmd=="ENQUEUE") { int element; cin>>element; int t=team[element]; if(q2[t].empty()) q.push(t); q2[t].push(element); } else//DEQUEUE { int t=q.front(); cout<<q2[t].front()<<endl; q2[t].pop(); if(q2[t].empty()) q.pop(); } } cout<<endl; } return 0; }