问题陈述
给定一个排列 A=(A1,A2,…,AN),A 是 (1,2,…,N) 的一个排列。
对于一对整数 (L,R),满足 1≤L≤R≤N,令 f(L,R) 为通过将 A 的第 L 到第 R 个元素逆序替换得到的排列,即用 AR,AR−1,…,AL+1,AL 同时替换 AL,AL+1,…,AR−1,AR。
有 2N(N+1) 种选择 (L,R),使得 1≤L≤R≤N。
如果将所有这些 (L,R) 对应的排列 f(L,R) 按字典顺序列出并排序,从前开始数,第 K 个排列是什么?
何为序列的字典顺序?
一个序列 S=(S1,S2,…,S∣S∣) 若满足以下条件 1 或 2,则称其字典上较小于序列 T=(T1,T2,…,T∣T∣)。其中,∣S∣ 和 ∣T∣ 分别表示 S 和 T 的长度。
- ∣S∣<∣T∣ 并且 $(S_1,S_2,\ldots,S_{|S|}) = (T_1,T_2,\ldots,T_{|S|})$。
- 存在整数 1≤i≤min{∣S∣,∣T∣},满足以下两个条件。
- $(S_1,S_2,\ldots,S_{i-1}) = (T_1,T_2,\ldots,T_{i-1})$。
- Si 比 Ti(作为数字)小。
约束条件
- 1≤N≤7000
- 1≤K≤2N(N+1)
- A 是 (1,2,…,N) 的一个排列。
输入
输入以以下格式从标准输入给出:
N K
A1 A2 … AN
输出
令 B=(B1,B2,…,BN) 为按字典顺序排序的排列 f(L,R) 中第 K 个排列。
以以下格式打印 B:
B1 B2 … BN
示例输入 1
3 5
1 3 2
示例输出 1
2 3 1
这是所有满足 1≤L≤R≤N 的 (L,R) 对应的排列 f(L,R)。
- f(1,1)=(1,3,2)
- f(1,2)=(3,1,2)
- f(1,3)=(2,3,1)
- f(2,2)=(1,3,2)
- f(2,3)=(1,2,3)
- f(3,3)=(1,3,2)
当按字典顺序排列时,第五个排列是 f(1,3)=(2,3,1),需要打印出来。
示例输入 2
5 15
1 2 3 4 5
示例输出 2
5 4 3 2 1
答案是 f(1,5)。
示例输入 3
10 37
9 2 1 3 8 7 10 4 5 6
示例输出 3
9 2 1 6 5 4 10 7 8 3