2714: 堆积木
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:0
解决:
题目描述
小明有n块积木,分别编号为0到n-1。开始时,每块积木都独自占有一个固定的位置(即不会有叠放现象)。现在小明开始玩他的积木,有四种操作:
move a onto b: 先将a和b上的积木放回原来的位置(即其编号对应的位置),然后再将a放到b上面
move a over b: 先将a上的积木放回到原来的位置,然后将a放到b所在积木堆的顶部(b上的积木不动)
pile a onto b: 先将b上的积木放回原来的位置,再将a和a上的积木放到b上
pile a over b: 将a本身和其上的积木一起搬到到b所在的那堆积木之上
(当输入的两个操作数a,b在同一堆或相同时,视为无效命令,此时忽略命令)。
小明玩完积木后,就去看他很喜欢的卡通片了。现在给出他的所有操作,请你推测出每块积木最后所处位置。
输入
第一行一个整数n,表示积木块数。
接下来若干行,每行一个操作,如上所述。
最后一行为“quit”,表示读入结束。
输出
共n行。第i+1行先是一个整数i,表示编号为i的积木所在位置,后面是一个“:”(不含引号),接着是若干个用空格隔开的数表示原来,i位置现在叠放的积木编号。(从底层到顶层输出,若该位置没有积木,则这部分不需输出)。具体格式见样例。
样例输入 复制
10
move 9 onto 1
move 8 over 1
move 7 over 1
move 6 over 1
pile 8 over 6
pile 8 over 5
move 2 over 1
move 4 over 9
quit
样例输出 复制
0: 0
1: 1 9 2 4
2:
3: 3
4:
5: 5 8 7 6
6:
7:
8:
9:
提示
数据范围:100%数据n<=25,操作总数不超过1000个。