Previous Permutation
题目描述
你被给定了一个排列 P=(P1,…,PN),它是 (1,…,N) 的一个排列,且 (P1,…,PN)=(1,…,N)。
假设 P 是所有 (1…,N) 的排列中按字典序第 K 小的。求按字典序第 (K−1) 小的排列。
什么是排列?
一个 排列 指的是将 (1,…,N) 排成一个序列。
什么是字典序?
对于长度为 N 的序列,A=(A1,…,AN) 和 B=(B1,…,BN),当且仅当存在一个整数 1≤i≤N 满足以下两条时,称 A 在字典序上 严格小于 B。
(A1,…,Ai−1)=(B1,…,Bi−1).
A_i < B_i。
输入格式
输入从标准输入给出,格式如下:
N
P1 … PN
输出格式
设 Q=(Q1,…,QN) 为所求的排列。按顺序以空格分隔输出 Q1,…,QN 于一行中。
3
3 1 2
2 3 1
10
9 8 6 5 10 3 1 2 4 7
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,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 小,所以所求的排列,即第 4 小 (5−1=4),是 (2,3,1)。
标签: AtCoder|abc276C
来源
AtCoder|abc276C