#P2790. ccj与zrz之积木问题

ccj与zrz之积木问题

题目背景

ccj和zrz无聊到了玩起了搭积木...(本题选自uva101,翻译来自《算法竞赛入门经典2》)

题目描述

从左到右有 nn 个木块,编号从 00n1n-1,要求模拟以下 44 种操作(下面的 aabb 都是木块编号,归位表示比如 11 号木块归到 11 号位去)。

  • move a onto b\texttt{move }a\texttt{ onto }b:把 aabb 上方的木块全部归位,然后把 aa 摞在 bb 上面;
  • move a over b\texttt{move }a\texttt{ over }b:把 aa 上方的全部归位,然后把 aa 放在 bb 所在木块堆的顶部;
  • pile a onto b\texttt{pile }a\texttt{ onto }b:把 bb 上方的木块全部归位,然后把 aa 及上面的木块整体摞在 bb 上面;
  • pile a over b\texttt{pile }a\texttt{ over }b:把 aa 及上面的木块整体摞在 bb 所在木块堆的顶部;
  • 遇到 quit\texttt{quit} 停止。aabb 在同一堆的指令时非法指令,应当忽略。

最后输出每个位置的木块列表,按照从底部到顶部的顺序排列。

输入格式

第一行一个整数 nn

接下来若干行:每行一个指令(语法不会错),遇到 quit\texttt{quit} 停止。

输出格式

输出共 nn 行,第 ii 行输出一个 ii 和冒号,然后一个空格,输出,它位置上的所有积木。

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:

提示

数据范围及约定

对于全部数据,0<n<250<n<25