#4451. Previous Permutation

0

Previous Permutation

Previous Permutation

题目描述

你被给定了一个排列 P=(P1,…,PN)P = (P_1, \dots, P_N),它是 (1,…,N)(1, \dots, N) 的一个排列,且 (P1,…,PN)≠(1,…,N)(P_1, \dots, P_N) \neq (1, \dots, N)。 假设 PP 是所有 (1…,N)(1 \dots, N) 的排列中按字典序第 KK 小的。求按字典序第 (K−1)(K-1) 小的排列。

什么是排列?

一个 排列 指的是将 (1,…,N)(1, \dots, N) 排成一个序列。

什么是字典序?

对于长度为 NN 的序列,A=(A1,…,AN)A = (A_1, \dots, A_N) 和 B=(B1,…,BN)B = (B_1, \dots, B_N),当且仅当存在一个整数 1≤i≤N1 \leq i \leq N 满足以下两条时,称 AA 在字典序上 严格小于 BB。

(A1,…,Ai−1)=(B1,…,Bi−1).(A_{1},\ldots,A_{i-1}) = (B_1,\ldots,B_{i-1}). A_i < B_i。

输入格式

输入从标准输入给出,格式如下: NN P1P_1 …\ldots PNP_N

输出格式

设 Q=(Q1,…,QN)Q = (Q_1, \dots, Q_N) 为所求的排列。按顺序以空格分隔输出 Q1,…,QNQ_1, \dots, Q_N 于一行中。

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≤1002 \leq N \leq 100 1≤Pi≤N (1≤i≤N)1 \leq P_i \leq N \, (1 \leq i \leq N) Pi≠Pj (i≠j)P_i \neq P_j \, (i \neq j) (P1,…,PN)≠(1,…,N)(P_1, \dots, P_N) \neq (1, \dots, N) 输入中的所有数值均为整数。下面是 (1,2,3)(1, 2, 3) 的所有排列按升序字典序排列的结果。

(1,2,3)(1, 2, 3) (1,3,2)(1, 3, 2) (2,1,3)(2, 1, 3) (2,3,1)(2, 3, 1) (3,1,2)(3, 1, 2) (3,2,1)(3, 2, 1)

因此,P=(3,1,2)P = (3, 1, 2) 是第 5 小,所以所求的排列,即第 4 小 (5−1=4)(5 - 1 = 4),是 (2,3,1)(2, 3, 1)。

标签: AtCoder|abc276C

来源

AtCoder|abc276C