hack:
4 3
2 1 3 2
1 2 2 3
叉掉了以下题解:
剩下的题解有的是我看不懂的做法,比如 @litc 的题解;有的我敢说他们是碰对的。不过,对于 @litc ,虽然他在 13 年的提交可以通过这组 hack,但他在 15 年的提交会出错。
另外还有一组 hack 数据:
3 3
1 2 1
1 1 2
不过很遗憾没有叉掉任何题解()但你可以用它来验证你的做法。
正确的做法及证明可以看我的题解!
另外是修题面。原来的题面又不清晰又没 latex,我重写了一份。
给定一个由 n 个元素构成的序列 a 以及一个正整数 c。还有一个栈和一个结果序列,初始都为空。你需要进行 2n 次操作,每次是以下两种形式之一:
你需要最小化最后结果序列的字典序。输出这个字典序最小的结果序列。
对于两个长度为 n 的序列 a 和 b,a 的字典序小于 b,当且仅当存在整数 i 满足 1≤i≤n 使得对于所有整数 1≤j<i 有 aj=bj,且 ai<bi。
第一行两个空格隔开的整数 n 和 c,表示序列的长度和栈的最大容量。
第二行 n 个空格隔开的整数,第 i 个数 ai 表示序列 a 的第 i 个元素。
输出一行 n 个单个空格隔开的整数,表示字典序最小的结果序列。
对于 100% 的数据,1≤m≤n≤104,(然后是 ai 的范围,建议查看数据,因为原题只说了上界没说下界)。
## 题目描述
给定一个由 $n$ 个元素构成的序列 $a$ 以及一个正整数 $c$。还有一个栈和一个结果序列,初始都为空。你需要进行 $2n$ 次操作,每次是以下两种形式之一:
- 如果栈内元素少于 $c$ 个,并且 $a$ 内有元素没有被入栈,可以进行这个操作。把 $a$ 里第一个没被入栈的元素入栈。
- 如果栈不为空,可以进行这个操作。把栈顶元素添加到结果序列的末尾,然后出栈。
你需要最小化最后结果序列的字典序。输出这个字典序最小的结果序列。
对于两个长度为 $n$ 的序列 $a$ 和 $b$,$a$ 的字典序小于 $b$,当且仅当存在整数 $i$ 满足 $1\le i\le n$ 使得对于所有整数 $1\le j<i$ 有 $a_j=b_j$,且 $a_i<b_i$。
## 输入格式
第一行两个空格隔开的整数 $n$ 和 $c$,表示序列的长度和栈的最大容量。
第二行 $n$ 个空格隔开的整数,第 $i$ 个数 $a_i$ 表示序列 $a$ 的第 $i$ 个元素。
## 输出格式
输出一行 $n$ 个单个空格隔开的整数,表示字典序最小的结果序列。
## 说明/提示
- 对于 $40\%$ 的数据,$n\le12$。
对于 $100\%$ 的数据,$1\le m\le n\le 10^4$,(然后是 $a_i$ 的范围,建议查看数据,因为原题只说了上界没说下界)。