AT_arc160_a [ARC160A] Reverse and Count
题目描述
给定一个 $ (1,\ 2,\ \dots,\ N) $ 的排列 $ A = (A_1,\ A_2,\ \dots,\ A_N) $。
对于满足 $ 1 \leq L \leq R \leq N $ 的整数对 $ (L,\ R) $,定义 $ f(L,\ R) $ 为将 $ A $ 的第 $ L $ 个到第 $ R $ 个元素反转后得到的排列。
这里,“将 $ A $ 的第 $ L $ 个到第 $ R $ 个元素反转”是指将 $ A_L, A_{L+1}, \dots, A_{R-1}, A_R $ 同时替换为 $ A_R, A_{R-1}, \dots, A_{L+1}, A_L $。
满足 $ 1 \leq L \leq R \leq N $ 的 $ (L,\ R) $ 的选法共有 $ \frac{N(N+1)}{2} $ 种。
请将所有这样的 $ (L,\ R) $ 对应的排列 $ f(L,\ R) $ 全部枚举出来,并按字典序排序,输出第 $ K $ 个排列。
数列的字典序定义如下:对于数列 $ S = (S_1,S_2,\ldots,S_{|S|}) $ 和 $ T = (T_1,T_2,\ldots,T_{|T|}) $,若满足以下 1. 或 2.,则称 $ S $ 的字典序小于 $ T $。其中 $ |S|,\ |T| $ 分别表示 $ S,\ T $ 的长度。
1. $ |S| < |T| $ 且 $ (S_1,S_2,\ldots,S_{|S|}) = (T_1,T_2,\ldots,T_{|S|}) $。
2. 存在整数 $ 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}) $
- $ S_i $ 比 $ T_i $ 小(按数值比较)。
输入格式
输入按以下格式从标准输入读入。
> $ N $ $ K $ $ A_1 $ $ A_2 $ $ \dots $ $ A_N $
输出格式
设按字典序排序后,第 $ K $ 个排列为 $ B = (B_1, B_2, \dots, B_N) $。
请按如下格式输出 $ B $:
> $ B_1 $ $ B_2 $ $ \dots $ $ B_N $
说明/提示
### 数据范围
- $ 1 \leq N \leq 7000 $
- $ 1 \leq K \leq \frac{N(N+1)}{2} $
- $ A $ 是 $ (1,\ 2,\ \dots,\ N) $ 的一个排列
### 样例解释 1
将所有满足 $ 1 \leq L \leq R \leq 3 $ 的 $ (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) $
将它们按字典序排序后,第 $ 5 $ 个排列是 $ f(1, 3) = (2, 3, 1) $,因此输出该排列。
### 样例解释 2
答案为 $ f(1, 5) $。
由 ChatGPT 4.1 翻译