AT_abc276_c [ABC276C] Previous Permutation
题目描述
给定一个 (1, …, N) 的排列 P=(P1, …, PN)。但保证 (P1, …, PN)=(1, …, N)。
将 (1, …, N) 的所有排列按字典序从小到大排列,假设 P 是第 K 个。请你求出字典序第 K−1 个排列。
什么是排列?
(1, …, N) 的排列是指将 (1, …, N) 重新排列得到的数列。
什么是字典序?
对于长度为 N 的数列 $A = (A_1,\ \dots,\ A_N),\ B = (B_1,\ \dots,\ B_N)$,若存在某个整数 1≤i≤N,同时满足以下两个条件,则称 A 字典序严格小于 B:
- (A1,…,Ai−1)=(B1,…,Bi−1)
- Ai<Bi
输入格式
输入从标准输入中给出,格式如下:
N P1 … PN
输出格式
请输出所求的排列 Q=(Q1, …, QN),用空格分隔,输出一行。
输入输出样例 #1
输入 #1
3
3 1 2
输出 #1
2 3 1
输入输出样例 #2
输入 #2
10
9 8 6 5 10 3 1 2 4 7
输出 #2
9 8 6 5 10 2 7 4 3 1
说明/提示
限制条件
- 2≤N≤100
- 1≤Pi≤N(1≤i≤N)
- Pi=Pj(i=j)
- (P1, …, PN)=(1, …, N)
- 输入的所有值均为整数
样例解释 1
将 (1, 2, 3) 的所有排列按字典序从小到大排列如下:
- (1, 2, 3)
- (1, 3, 2)
- (2, 1, 3)
- (2, 3, 1)
- (3, 1, 2)
- (3, 2, 1)
因此 P=(3, 1, 2) 是第 5 个,所求的排列,即第 5−1=4 个排列为 (2, 3, 1)。
由 ChatGPT 4.1 翻译