/ WHOJ / 题库 /

偷懒的小X

偷懒的小X

题目描述

堆是一棵完全二叉树,就像下面这棵树一样。

说明

上图的这棵完全二叉树有一个特点,就是所有父结点的权值都比子结点的权值要小(注意:圆圈里面的数是权值,圆圈上面的数是这个结点的编号)。符合这样特点的完全二叉树我们称为小根堆。

小根堆的根的权值最小,且根的两个子树也是一个小根堆。可以用一个数组\(a[\ ]\)来记录一棵完全二叉树,\(a[1]\)为根结点,若结点\(a[i]\)不是根结点,那么它的父亲为\(a[i/2]\)(取下整);若结点\(a[j]\)不是叶子结点,那么它的左儿子为\(a[2×j]\),它的右儿子为\(a[2×j+1]\)。

现在给你一列\(n\)个数,要你按一定顺序依次插入数组\(a[\ ]\)中(即第\(i\)个数为\(a[i]\)),这个数组\(a[\ ]\)记录的完全二叉树最后得出来的就已经是一个小根堆,若有多种方法,输出字典序最大的一组。

格式

输入格式

第\(1\)行为一个正整数\(n\),表示数列的长度。

第\(2\)行包含\(n\)个正整数,为这个数列的\(n\)个数,数字之间用空格隔开。

输出格式

输出一行\(n\)个数,依次输出描述小根堆的完全二叉树的数组\(a\),数字之间用空格隔开,行末换行并没有空格。

样例1

样例输入1

3
1 2 3

样例输出1

1 3 2

样例解释

1 2 31 3 2 都是满足要求,但是 1 3 2 的字典序更大。

限制

测试点编号 \(x\)
\(1,2,3\) \(n≤15\)
\(4,5\) \(n≤1023\)
\(6,7,8,9,10\) \(n≤65535\), 所有数字不超过 \(10^8\)