出栈序列[3]
时间限制:1秒 内存限制:256M
【题目描述】
栈是一种强大的数据结构,它的一种特殊功能是对数组进行排序。例如,借助一个栈,依次将数组1,3,2按顺序入栈或出栈,可对其从大到小排序:1入栈;3入栈;3出栈;2入栈;2出栈;1出栈。 此时的出栈序列是3,2,1,因此实现了对数组的排序。
遗憾的是,有些时候,仅仅借助一个栈,不能实现对数组的完全排序。例如给定数组 2,1,3,借助一个栈,能获得的字典序最大的出栈序列是 3,1,2:2入栈;1入栈;3入栈;3出栈;1出栈;2出栈。
请你借助一个栈,对一个给定的数组按照出栈顺序进行从大到小排序。当无法完全排序时,请输出字典序最大的出栈序列。
【输入格式】
第一行包含一个整数,表示入栈序列长度 \(n\)。
第二行包含个整数,表示入栈序列。输入数据保证给定的序列是到 \(n\) 的全排列,即不会出现重复数字。
【输出格式】
仅一行,共个整数,表示你计算出的出栈序列。
【输入输出样例】
Input
3
2 1 3
Output
3 1 2
【数据限制】
对于 \(30\%\) 的数据,\(0<n≤1000\)。
对于 \(60\%\) 的数据,\(0<n≤100000\)。
对于 \(100\%\) 的数据,\(0<n≤1000000\),元素大小均在 \(2*10^9\) 以内。
【来源】
Mr.he