问题1407--Team Queue

1407: Team Queue

时间限制: 2 Sec  内存限制: 128 MB
提交: 139  解决: 36
[状态] [讨论版] [提交] [命题人:]
题目描述
队列和优先级队列是大多数计算机科学家所熟知的数据结构。然而,团队队列(Team Queue)尽管在日常生活中经常出现,但并非为大家所熟知。例如,午餐时间在Mensa前排队的队列就是一个团队队列。
在一个团队队列中每个元素属于一个团队。当一个元素进入队列时,它首先从队列的首部到尾部搜索检查是否它的队友(同一团队的元素)已经在队列中。如果有的话,该元素进入队列排在它的队友的后面。如果没有,它进入队列排在队列尾部,成为最后一个新元素。出队列则如同正常的队列操作:按元素在团队队列中的顺序,从头部到尾部出队列。

请编写一个程序,模拟团队队列的过程。

输入
输入包含一个或多个测试用例。每个测试用例先给出团队数目t (1<=t<=1000),然后是t个团队的描述。每个团队描述由属于该团队的元素数目和元素组成,元素是范围在0 – 999999的整数。一个团队最多由1000个元素组成。
最后,给出指令列表。有如下三类指令:
  • ENQUEUE x – 元素x进入团队队列;
  • DEQUEUE – 将第一个元素移出队列;
  • STOP – 测试用例停止。
输入由t0值表示停止。

提醒:一个测试用例可以包含多达200 000条指令,因此团队队列的实现应该是高效的,元素的进队列和出队列应该仅用确定的时间。

输出

对每个测试用例,先输出一行“Scenario #k”,其中k是测试用例的编号。然后针对每个DEQUEUE指令,用一行输出出队列的元素。在每个测试用例之后,输出一个空行,即使是最后一个测试用例。

样例输入 Copy
2
3 101 102 103
3 201 202 203
ENQUEUE 101
ENQUEUE 201
ENQUEUE 102
ENQUEUE 202
ENQUEUE 103
ENQUEUE 203
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
2
5 259001 259002 259003 259004 259005
6 260001 260002 260003 260004 260005 260006
ENQUEUE 259001
ENQUEUE 260001
ENQUEUE 259002
ENQUEUE 259003
ENQUEUE 259004
ENQUEUE 259005
DEQUEUE
DEQUEUE
ENQUEUE 260002
ENQUEUE 260003
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
0
样例输出 Copy
Scenario #1
101
102
103
201
202
203

Scenario #2
259001
259002
259003
259004
259005
260001
来源/分类