配点 : 700 点
問題文
(0,1,⋯,N−1) の順列 P=(P0,P1,⋯,PN−1) が与えられます.
整数 a,b (0≤a,b≤N−1) に対して,順列 f(a,b) を次のように定義します.
- f(a,b)=(q0,q1,⋯,qN−1) とおいて,q(i+a(modN))=(Pi+b(modN)) (0≤i≤N−1) と定める.
すべての a,b に対し f(a,b) を求めると,N2 個の順列が得られます.
これらの順列を辞書順でソートすることを考えます.
ソートしたあと,先頭から K 番目に位置している順列を求めてください.
数列の辞書順とは?
数列 S=(S1,S2,…,S∣S∣) が数列 T=(T1,T2,…,T∣T∣) より辞書順で小さいとは、下記の 1. と 2. のどちらかが成り立つことを言います。
ここで、∣S∣,∣T∣ はそれぞれ S,T の長さを表します。
- ∣S∣<∣T∣ かつ $(S_1,S_2,\ldots,S_{|S|}) = (T_1,T_2,\ldots,T_{|S|})$。
- ある整数 1≤i≤min{∣S∣,∣T∣} が存在して、下記の 2 つがともに成り立つ。
- $(S_1,S_2,\ldots,S_{i-1}) = (T_1,T_2,\ldots,T_{i-1})$
- Si が Ti より(数として)小さい。
制約
- 1≤N≤2×105
- 1≤K≤N2
- (P0,P1,⋯,PN−1) は (0,1,⋯,N−1) の順列である.
- 入力される値はすべて整数である
入力
入力は以下の形式で標準入力から与えられる.
N K
P0 P1 ⋯ PN−1
出力
答えとなる順列を,要素を空白区切りで出力せよ.
2 2
0 1
0 1
f(a,b) として以下の 4 つが考えられます.
- f(0,0)=(0,1)
- f(0,1)=(1,0)
- f(1,0)=(1,0)
- f(1,1)=(0,1)
これらの順列を辞書順に並べると,(0,1),(0,1),(1,0),(1,0) となります.
よって,この中で 2 番目に位置する (0,1) が答えになります.
4 6
0 2 1 3
1 2 0 3
10 79
6 5 9 8 7 1 3 2 0 4
7 9 8 2 1 0 4 6 5 3