QOJ.ac

QOJ

时间限制: 1.0 s 内存限制: 32 MB 总分: 80

#16423. OBILAZAK

统计

小 Mirko 旅游参观了斯拉沃尼亚(Slavonia)地区 Donji Andrijevci 镇附近的一个村庄。碰巧的是,村庄里的街道布局看起来与深度为 $K$ 的满二叉树(perfect binary tree)的形状极其相似。深度为 $K$ 的满二叉树由排列在 $K$ 个层级上的 $2^K - 1$ 个节点组成(如插图所示)。每个节点都包含一栋标有门牌号的建筑物。此外,除了最后一层的建筑物外,所有建筑物都有左子节点和右子节点(再次参见插图)。

深度为 2 和 3 的满二叉树

Mirko 参观了村庄里的所有建筑物,并记录下了确切的进入顺序。现在他想向你描述村庄的样子,但他不太记得了。幸运的是,他记得自己参观建筑物的规则:

  1. 开始时,他站在第一层唯一的建筑物前。
  2. 如果他当前所站立的建筑物有尚未访问过的左子节点,他将移动到该左子节点前。
  3. 如果该建筑物没有左子节点,或者他已经访问过它,他将进入当前建筑物并在纸上写下它的门牌号。
  4. 如果他已经访问过当前建筑物,且该建筑物有右子节点,他将移动到该右子节点前。
  5. 如果他已经访问了当前建筑物及其左、右子节点,他将返回到当前建筑物的父节点。

在访问上图中的村庄后,纸上的记录如下:第一个村庄为 2-1-3,第二个村庄为 1-6-4-3-5-2-7。编写一个程序,帮助 Mirko 重建每个层级上的门牌号顺序。

输入格式

输入的第一行包含整数 $K$ ($1 \le K \le 10$),表示 Mirko 刚刚访问的村庄的层数。

输入的第二行包含 $2^K - 1$ 个整数,表示 Mirko 纸上的门牌号序列。门牌号是唯一的,且都在区间 $[1, 2^K - 1]$ 内。

输出格式

输出必须包含 $K$ 行。第 $i$ 行必须包含该村庄第 $i$ 层上的门牌号序列。

样例

输入样例 1

2
2 1 3

输出样例 1

1
2 3

输入样例 2

3
1 6 4 3 5 2 7

输出样例 2

3
6 2
1 4 5 7

说明

样例 1 和样例 2 的解释:这些样例对应题目描述插图中的村庄。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.