问题1407--Team Queue

1407: Team Queue

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

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

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

提醒:一个测试用例可以包含多达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
来源/分类