#P4785. [BalticOI 2016] 交换 (Day2)

    ID: 5565 远端评测题 1000ms 250MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>贪心2016BalticOI(波罗的海)

[BalticOI 2016] 交换 (Day2)

题目描述

给定一个包含 nn 个数的序列 x1,x2,…,xnx_1,x_2,\dots,x_n。1,2,…,n1,2,\dots,n 每个数在序列中刚好出现一次。
你可以通过交换修改这个序列。你需要进行连续的 n−1n-1 轮操作,编号 k=2,3,…,nk=2,3,\dots,n,第 kk 轮你可以选择交换 xkx_k 和 x⌊k/2⌋x_{\lfloor k/2\rfloor} 或是什么都不做。
如果存在一个数 j(1≤j≤n)j(1 \leq j \leq n),使得对于所有 k<jk < j 且 aj<bj,a_j < b_j, ak=bka_k = b_k 成立,那么序列 a1…ana_1\dots a_n 「字典序小于」序列 b1…bnb_1\dots b_n。
你能得到的字典序最小的序列是什么?

输入格式

第一行,一个整数 nn。
第二行,nn 个整数,表示序列 x1,x2,…,xnx_1,x_2,\dots,x_n。

输出格式

输出 nn 个整数,表示你能得到的字典序最小的序列。

5
3 4 2 5 1
2 1 3 4 5

提示

子任务 分数 数据范围
1 10 1≤n≤201 \leq n \leq 20
2 11 1≤n≤401 \leq n \leq 40
3 27 1≤n≤10001 \leq n \leq 1000
4 20 1≤n≤5⋅1041 \leq n \leq 5 \cdot 10^4
5 32 1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5