【题意】
有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会被排到长队的队尾。
输入每个团队中所有队员的编号,要求支持如下3中指令:
ENQUEUE x:编号为x的人进入长队
DEQUEUE:长队的队首出队
STOP:停止模拟
对于每个DEQUEUE指令,输出出队的人的 编号。
【代码】
#include<cstdio>
#include<queue>
#include<map>
using namespace std;
const int maxt = 1000 + 10;
int main()
{
int t, kase = 0;
while (scanf("%d", &t) == 1 && t)
{
printf("Scenario #%d\n", ++kase);
//记录所有人的团队编号
map<int, int> team;
for (int i = 0; i < t; i++)
{
int n, x;
scanf("%d", &n);
while (n--)
{
scanf("%d", &x);
team[x] = i;
}
}
//模拟
queue<int> q, q2[maxt];//q是团队的队列,而q2[i]是团队i成员的队列
for (;;)
{
int x;
char cmd[10];
scanf("%s", cmd);
if