恶心的模拟题
用庄牛牛的方法才写出
果然我还很弱
Title#include <iostream>
#include <list>
#include <string>
using namespace std;
int team[1000000];
list< list<int> > q;
list<int> *pos[1001];
int main()
{
int t,n,i,j,temp,num,cas = 1;
char str[10];
list<int> tq;
while (1)
{
scanf("%d",&t);
if (t == 0)
break;
for (i = 0;i <= 1000;i++)
pos[i] = NULL;
memset(team,-1,sizeof(team));
for (j = 0;j < t;j++)
{
scanf("%d",&n);
for (i = 0;i < n;i++)
{
scanf("%d",&temp);
team[temp] = j;
}
}
q.clear();
printf("Scenario #%d\n",cas++);
while (scanf("%s",&str) != EOF && str[0] != 'S')
{
if (str[0] == 'E')
{
scanf("%d",&num);
if (team[num] == -1)
{
tq.push_back(num);
q.push_back(tq);
tq.clear();
}
else
{
if (pos[team[num]] == NULL)
{
tq.push_back(num);
q.push_back(tq);
pos[team[num]] = &(q.back());
tq.clear();
}
else
{
(*pos[team[num]]).push_back(num);
}
}
}
else if (str[0] == 'D')
{
temp = (q.front()).front();
printf("%d\n",temp);
(q.front()).pop_front();
if((q.front()).empty())
{
q.pop_front();
pos[team[temp]]=NULL;
}
}
}
printf("\n");
}
return 0;
}