题目: T2
不闹了题目:
输入序列中有 n 个正整数,栈 S 开始为空。 你每次只可以进行下面两种操作之一:① 将输入序列头端的数据移至 S 栈顶(进 S 栈); ② 将 S 栈顶元素输出并删除(退 S 栈)。 当然,输入序列非空时才可进行①操作,S 非空时才可进行②操作。 当①和②的操作都无法执行时,一定得到 n 个数据的一个输出序列。 由于①和②混搭的次序不同,导致相应的输出序列也各不相同, 请你求出能够得到的输出序列中字典序最小的一个序列。所谓字典序最小可以这样理解: 首元素尽量小,在首元素最小的序列中第二元素尽可能小、在前 2 数据字典序最小的序列中, 第三项尽可能小…,直至 n 项全部排完。
输入格式:
输入文件 stack.in 第一行仅有一个正整数 n,表示输入序列中数据的个数。 第二行就是输入序列中依次排列的 n 个数据,相邻两数据间有一个空格。 输出文件 stack.out 中仅有一行 n 个数,就是字典序最小的输出序列,相邻整数间用一 个空格隔开。
输入输出样例:
4
2 3 1 4
输出:
1 3 2 4
说明/提示:
60%的数据 n<12; 80%的数据 n<1000; 100%的数据 n<100000,其他数据在 int 范围。