uoj#P174. 新年的破栈
新年的破栈
零点的钟声敲响,猴年终于到来啦~
在这新年的第一天,猴族首领猴腮雷自然是要接受来自世界各地的朝贡的。在种类繁多的礼品中,魔仙堡女王送来的栈引起了他的注意——他发现这个栈的大小正好适合来装他的腮雷。
但是遗憾的是,因为种种原因,这个栈的底部破了,所以猴族首领猴腮雷让手下的工匠在这个栈的底部装了一个阀门,于是猴族首领猴腮雷不仅可以从这个栈的顶端取出它的腮雷,还能打开栈底的阀门,从最下面取出腮雷!
猴族首领猴腮雷有 $n$ 个腮雷,编号为 $i$ 的腮雷的威力是 $A_i$,而且任意两颗腮雷的威力都是不同的。现在他想用这个栈来整理这些腮雷,每时每刻他可以进行下面三种操作中的一种:
- 入栈:如果当前还有腮雷没有被放入过栈中,那么就把剩下的腮雷中编号最小的放到栈中(作为新的栈顶)。
- 出栈:如果当前栈中有腮雷,那么就把栈顶(即栈中最后被放入的)的腮雷取出来。
- 打开阀门:如果当前栈中有腮雷,那么就把栈底(即栈中最先被放入的)的腮雷取出来。
在所有腮雷都从栈中取出后,猴腮雷按照腮雷出栈的时间顺序排成一排,再把这些腮雷的威力记录下来,这样就得到了一个数列 $B$。现在猴腮雷想让这个数列的字典序尽可能的小,但是因为他日理万机,没有时间来想这种简单的小问题,于是他就让你来帮他求出字典序最小的数列 $B$。
对于两个长度为 $n$ 的数列 $a$ 和 $b$,$a$ 的字典序小于 $b$ 当且仅当存在一个整数 $k \in [1,n]$ 满足 $a_{i} = b_{i}(1 \leq i < k)$ 且 $a_k < b_k$。
输入格式
第一行一个正整数 $T$,表示数据组数。
对于每组数据,第一行包含一个正整数 $n$。
接下来一行 $n$ 个正整数 $A_1, \dots, A_n$。
输出格式
对于每组数据,输出一行 $n$ 个正整数,表示字典序最小的数列 $B$ 。
2
3
1 2 3
4
1 3 4 2
1 2 3
1 2 3 4
对于第一组数据,重复入栈、出栈这两个操作三次,即可得到最优解。
对于第二组数据,最优的操作序列如下:入栈,出栈,入栈,入栈,入栈,出栈,打开阀门,出栈。
样例二
见样例数据下载。
限制与约定
测试点编号 | $n$ 的规模 |
---|---|
1 | $n \leq 10$ |
2 | |
3 | $n \leq 2000$ |
4 | |
5 | |
6 | |
7 | $n \leq 100000$ |
8 | |
9 | |
10 |
对于所有数据,保证 $1 \leq T \leq 5$,$1 \leq A_i \leq 10^9$ 。
时间限制:$1\texttt{s}$
空间限制:$256\texttt{MB}$