配点 : 300 点
問題文
(1,…,N) の順列 P=(P1,…,PN) が与えられます。ただし、(P1,…,PN)=(1,…,N) です。
(1…,N) の順列を全て辞書順で小さい順に並べたとき、P が K 番目であるとします。辞書順で小さい方から K−1 番目の順列を求めてください。
順列とは?
(1,…,N) の順列とは、(1,…,N) を並べ替えて得られる数列のことをいいます。
辞書順とは?
長さ N の数列 A=(A1,…,AN),B=(B1,…,BN) に対し、A が B より辞書順で真に小さいとは、ある整数 1≤i≤N が存在して、下記の 2 つがともに成り立つことをいいます。
- (A1,…,Ai−1)=(B1,…,Bi−1)
- Ai<Bi
制約
- 2≤N≤100
- 1≤Pi≤N(1≤i≤N)
- Pi=Pj(i=j)
- (P1,…,PN)=(1,…,N)
- 入力される値は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N
P1 … PN
出力
求める順列を Q=(Q1,…,QN) として、Q1,…,QN をこの順に空白区切りで一行に出力せよ。
3
3 1 2
2 3 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) です。
10
9 8 6 5 10 3 1 2 4 7
9 8 6 5 10 2 7 4 3 1