#ATarc160a. [ARC160A] Reverse and Count

[ARC160A] Reverse and Count

题目描述

给定一个 (1, 2, , N)(1,\ 2,\ \dots,\ N) 的排列 A=(A1, A2, , AN)A = (A_1,\ A_2,\ \dots,\ A_N)

对于满足 1LRN1 \leq L \leq R \leq N 的整数对 (L, R)(L,\ R),定义 f(L, R)f(L,\ R) 为将 AA 的第 LL 个到第 RR 个元素反转后得到的排列。

这里,“将 AA 的第 LL 个到第 RR 个元素反转”是指将 AL,AL+1,,AR1,ARA_L, A_{L+1}, \dots, A_{R-1}, A_R 同时替换为 AR,AR1,,AL+1,ALA_R, A_{R-1}, \dots, A_{L+1}, A_L

满足 1LRN1 \leq L \leq R \leq N(L, R)(L,\ R) 的选法共有 N(N+1)2\frac{N(N+1)}{2} 种。

请将所有这样的 (L, R)(L,\ R) 对应的排列 f(L, R)f(L,\ R) 全部枚举出来,并按字典序排序,输出第 KK 个排列。

数列的字典序定义如下:对于数列 S=(S1,S2,,SS)S = (S_1,S_2,\ldots,S_{|S|})T=(T1,T2,,TT)T = (T_1,T_2,\ldots,T_{|T|}),若满足以下 1. 或 2.,则称 SS 的字典序小于 TT。其中 S, T|S|,\ |T| 分别表示 S, TS,\ T 的长度。

  1. S<T|S| < |T| 且 $(S\_1,S\_2,\ldots,S\_{|S|}) = (T\_1,T\_2,\ldots,T\_{|S|})$。
  2. 存在整数 1imin{S, T}1 \leq i \leq \min\lbrace |S|,\ |T| \rbrace,满足以下两点:
    • $(S\_1,S\_2,\ldots,S\_{i-1}) = (T\_1,T\_2,\ldots,T\_{i-1})$
    • SiS_iTiT_i 小(按数值比较)。

输入格式

输入按以下格式从标准输入读入。

NN KK A1A_1 A2A_2 \dots ANA_N

输出格式

设按字典序排序后,第 KK 个排列为 B=(B1,B2,,BN)B = (B_1, B_2, \dots, B_N)

请按如下格式输出 BB

B1B_1 B2B_2 \dots BNB_N

样例 1

输入

3 5
1 3 2

输出

2 3 1

样例 2

输入

5 15
1 2 3 4 5

输出

5 4 3 2 1

样例 3

输入

10 37
9 2 1 3 8 7 10 4 5 6

输出

9 2 1 6 5 4 10 7 8 3

说明/提示

数据范围

  • 1N70001 \leq N \leq 7000
  • 1KN(N+1)21 \leq K \leq \frac{N(N+1)}{2}
  • AA(1, 2, , N)(1,\ 2,\ \dots,\ N) 的一个排列

样例解释 1

将所有满足 1LR31 \leq L \leq R \leq 3(L, R)(L,\ R) 对应的排列 f(L, R)f(L,\ R) 枚举如下:

  • f(1,1)=(1,3,2)f(1, 1) = (1, 3, 2)
  • f(1,2)=(3,1,2)f(1, 2) = (3, 1, 2)
  • f(1,3)=(2,3,1)f(1, 3) = (2, 3, 1)
  • f(2,2)=(1,3,2)f(2, 2) = (1, 3, 2)
  • f(2,3)=(1,2,3)f(2, 3) = (1, 2, 3)
  • f(3,3)=(1,3,2)f(3, 3) = (1, 3, 2)

将它们按字典序排序后,第 55 个排列是 f(1,3)=(2,3,1)f(1, 3) = (2, 3, 1),因此输出该排列。

样例解释 2

答案为 f(1,5)f(1, 5)

由 ChatGPT 4.1 翻译