题目
分析
一堆队列..
代码
#include <cstdio>
#include <cstring>
int team[2010][1010], front[2010], rear[2010];
int map[1000100];
int main()
{
int t, m, n;
char o[50];
for (int c = 1; scanf("%d", &t), t; c++) {
memset(front, 0, sizeof(front));
memset(rear, 0, sizeof(rear));
for (int i = 0; i < t; i++) {
scanf("%d", &n);
for (int j = 0; j < n; j++) {
scanf("%d", &m);
map[m] = i;
}
}
printf("Scenario #%d\n", c);
while (scanf("%s", o) && o[0] != 'S') {
if (o[0] == 'E') {
scanf("%d", &m);
for (int i = 0; ;i++)
if (rear[i] == 0 || (rear[i] != front[i] && map[team[i][0]] == map[m])) {
team[i][rear[i]++] = m;
break;
}
} else if (o[0] == 'D') {
for (int i = 0; ;i++)
if (rear[i] > front[i]) {
printf("%d\n", team[i][front[i]++]);
break;
}
}
}
printf("\n");
}
return 0;
}