#P2259. Team Queue

Team Queue

队列和优先级队列是大多数计算机科学家都知道的数据结构。 然而,尽管团队队列在日常生活中经常发生,但它并不为人所知。 例如,在午餐时间,门萨餐厅前的队列是团队队列。

在团队队列中,每个元素都属于一个团队。 如果一个元素进入队列,它首先从头到尾搜索队列,检查它的一些队友(同一团队的元素)是否已经在队列中。 如果是,它就在它们后面进入队列。 如果不是,它就进入队列的尾部,成为新的最后一个元素(运气不好)。 退出队列的过程与正常队列一样:按照元素在团队队列中出现的顺序从头到尾地处理它们。

您的任务是编写一个模拟这种团队队列的程序。

输入格式

输入将包含一个或多个测试用例。 每个测试用例从团队数量t (1<=t<=1000)开始。 接下来是对团队的描述,每一个描述都由属于团队的元素数量和元素本身组成。。 元素是范围为0 - 999999的整数。 一个团队可能由多达1000个元素组成。

最后,下面是一个命令列表。 有三种不同的命令:

ENQUEUE x 将元素x输入到团队队列中 DEQUEUE -处理第一个元素并将其从队列中删除 STOP—测试用例的结束

对于t,输入将以0值结束。

警告:一个测试用例可能包含多达200000(20万个)命令,因此团队队列的实现应该是高效的:元素的查询和退出队列都应该只需要恒定的时间。

输出格式

对于每个测试用例,首先打印一行“Scenario #k”,其中k是测试用例的编号。 然后,对于每个DEQUEUE命令,打印在单行上退出队列的元素。 在每个测试用例之后打印一个空行,即使是在最后一个测试用例之后。

input

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

output

Scenario #1
101
102
103
201
202
203

Scenario #2
259001
259002
259003
259004
259005
260001