题目描述
正整数 N, K が与えられます. 1 から N までの整数からなる順列 A = (A1, A2, …, AN) であって次の条件を満たすもののうち, 辞書順最小のものを求めてください.
- 任意の i (1≤ i≤ N) に対して ∣ Ai − i∣ ≥ K が成り立つ.
そのような順列が存在しない場合には,-1
を出力してください.
数列の辞書順とは? 相異なる数列 S と数列 T の大小を判定するアルゴリズムを以下に説明します.
以下では S の i 番目の要素を Si のように表します.また, S が T より辞書順で小さい場合は S < T ,大きい場合は S > T と表します.
- S と T のうち長さが短い方の文字列の長さを L とします.i=1,2,…,L に対して Si と Ti が一致するか調べます.
- Si = Ti である i が存在する場合,そのような i のうち最小のものを j とします.そして,Sj と Tj を比較して, Sj が Tj より(数として)小さい場合は S < T ,大きい場合は S > T と決定して,アルゴリズムを終了します.
- Si = Ti である i が存在しない場合, S と T の長さを比較して,S が T より短い場合は S < T ,長い場合は S > T と決定して,アルゴリズムを終了します.
输入格式
入力は以下の形式で標準入力から与えられます.
N K
输出格式
条件を満たす順列 A のうち,辞書順最小のものを次の形式で出力してください.
A1 A2 … AN
そのような順列が存在しない場合には,-1
を出力してください.
题目大意
- 求字典序最小的 1∼n 的排列 p 满足 ∣pi−i∣≥k,无解输出 −1。
- 2≤n≤3×105,1≤p<n。
3 1
2 3 1
8 3
4 5 6 7 8 1 2 3
8 6
-1
提示
制約
- 2≤ N≤ 3× 105
- 1≤ K≤ N − 1
Sample Explanation 1
条件を満たす順列は,(2, 3, 1) と (3, 1, 2) の 2 つです.例えば (2, 3, 1) は - ∣ A1 − 1∣ = 1 ≥ K - ∣ A2 − 2∣ = 1 ≥ K - ∣ A3 − 3∣ = 2 ≥ K であるため条件を満たしています.