#ABC276C. 前一个排列

前一个排列

前一个排列

题目描述

给你一个 (1,,N)(1, \dots, N) 的排列 P=(P1,,PN)P = (P_1, \dots, P_N),其中 (P1,,PN)(1,,N)(P_1, \dots, P_N) \neq (1, \dots, N)

假设 PP(1,N)(1 \dots, N) 的所有排列中字典序第 KK 小的排列。求字典序第 (K1)(K-1) 小的排列。

什么是排列?

(1,,N)(1, \dots, N) 的一个排列就是把 (1,,N)(1, \dots, N) 排成一个序列。

什么是字典序?

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

(A1,,Ai1)=(B1,,Bi1)(A_{1},\ldots,A_{i-1}) = (B_1,\ldots,B_{i-1})

Ai<BiA_i \lt 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

以下是 (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 小的排列,所以所求排列(第 51=45 - 1 = 4 小)是 (2,3,1)(2, 3, 1)

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

数据范围

  • 2N1002 \leq N \leq 100
  • 1PiN(1iN)1 \leq P_i \leq N \, (1 \leq i \leq N)
  • PiPj(ij)P_i \neq P_j \, (i \neq j)
  • (P1,,PN)(1,,N)(P_1, \dots, P_N) \neq (1, \dots, N)
  • 输入中的所有值均为整数。
难度 普及
通过率
尝试 0
已通过 0
ID
2530
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签