Team Queue
题目描述
断罪小学的插队问题要比其他学校严重得多。该校的学生们自发组成了\(T\)个帮派,在排队时大家都默认“遵守”如下的规则:
①如果队列中已有同帮派的人(下文简称为“队友”),则插队到最后一名队友的身后;
②否则,乖乖排到队列的末端。
中午12点,随着上午最后一声铃响,断罪小学的食堂开放了唯一的一个窗口。给定学生们所属的帮派以及入队、出队的先后顺序,请你编写程序模拟该队列的运作。初始时队列为空。
输入格式
每个输入文件包含多组测试数据。对于每组数据:
第一行是一个非负整数\(T\)。\(T=0\)表示该文件输入结束,\(T>0\)表示该组数据中帮派的个数(详见题目描述部分)。
若输入未结束,则之后\(T\)行依次描述第\(1 \sim T\)个帮派。每行包含一个正整数\(N\),然后是\(N\)个正整数\(x_1, x_2 \cdots x_N\)。\(N\)为该帮派的成员个数,\(x_1 \cdots x_N\)分别为每个成员在学校的编号。
之后若干行,每行包含以下三种指令的其中一个:
ENQUEUE \(x\):编号为\(x\)的人入队
DEQUEUE:队首的人出队
STOP:该组测试数据结束
输出格式
对于第\(k\)组测试数据,首先输出一行
Scenario #\(k\)(\(k\)用相应的数字代替)
然后对于该组数据的每个DEQUEUE指令,输出一行表示出队学生的编号。
每组数据结束后,输出一个空行。
样例
输入
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
输出
Scenario #1
259001
259002
259003
259004
259005
260001
数据规模及约定
每个文件包含\(1 \sim 5\)组测试数据。对于每组数据:
\(0 \le T \le 1000, \phantom{x} 1 \le N \le 1000, \phantom{x} 0 \le x < 10^6\)
学生的总数\(\le 5 \times 10^4\),命令的总数\(\le 10^5\)。
对于50%的测试文件:\(1 \le N \le 10\),学生总数\(\le 500\),命令总数\(\le 1000\)。
数据内容保证:已在队列中的学生不会重复入队,学生的编号两两不同,执行DEQUEUE指令时队列一定有人。
来源
2018.2 太原五中寒假NOIP提高组集训
题目选自:PKU Online Judge:http://poj.org/problem?id=2259