📄 3191149_re.c
字号:
#include <stdio.h>
int team, no[1001];
int teamid[1000000];
int inqueue[1001], pos[1001];
int flag;
int queue[200001], front, back;
int next[200001], prev[200001];
int main()
{
int i, j, t, p, cas, id;
char op[10];
flag = 1;
cas = 1;
while(scanf("%d",&team)==1,team)
{
printf("Scenario #%d\n",cas++);
flag ++;
front = 0;
back = 0;
for(i = 1; i <= team; i++)
{
scanf("%d",&no[i]);
for(j = 0; j < no[i]; j++)
{
scanf("%d",&id);
teamid[id] = i;
}
}
while(scanf("%s",op)==1)
{
if(op[0]=='S')
break;
if(op[0]=='E')
{
scanf("%d",&id);
t = teamid[id];
queue[back] = id;
if(inqueue[t]==flag)
{
p = pos[t];
next[prev[back]]++;
prev[back+1] = prev[back];
next[back] = next[p];
prev[next[p]] = back;
prev[back] = p;
next[p] = back;
pos[t] = back;
back++;
}
else
{
inqueue[t] = flag;
pos[t] = back++;
if(pos[t]==0)
{
prev[back] = 0;
next[pos[0]] = back;
}
else
{
next[pos[t]] = back;
prev[back] = pos[t];
}
}
}
else
{
printf("%d\n",queue[front]);
if(teamid[queue[front]]!=teamid[queue[next[front]]])
{
inqueue[queue[front]] = 0;
}
front = next[front];
}
}
printf("\n");
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -