思路
map(人对应的队伍) + 两个queue(1. 第i队的人 2. i队)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
using namespace std;
const int T = 1010;
int t;
int main()
{
int cnt = 0;
while(cin >> t, t != 0)
{
cout << "Scenario #" << ++ cnt << endl;
map<int, int> m_team;
for(int i = 1; i <= t; i ++ )
{
int n;
cin >> n;
while(n -- )
{
int m;
cin >> m;
m_team[m] = i;
}
}
string op; int num;
queue<int> team[T];
queue<int> q_team;
for(;;)
{
cin >> op;
if(op[0] == 'S') break;
if(op[0] == 'E')
{
cin >> num;
if(team[m_team[num]].empty())
q_team.push(m_team[num]);
team[m_team[num]].push(num);
}
if(op[0] == 'D')
{
int x = q_team.front();
cout << team[x].front() << endl;
team[x].pop();
if(team[x].empty())
q_team.pop();
}
}
cout << endl;
}
return 0;
}