AT_arc144_c [ARC144C] K Derangement

Description

[problemUrl]: https://atcoder.jp/contests/arc144/tasks/arc144_c 正整数 $ N,\ K $ が与えられます. $ 1 $ から $ N $ までの整数からなる順列 $ A\ =\ (A_1,\ A_2,\ \ldots,\ A_N) $ であって次の条件を満たすもののうち, 辞書順最小のものを求めてください. - 任意の $ i $ ($ 1\leq\ i\leq\ N $) に対して $ \lvert\ A_i\ -\ i\rvert\ \geq\ K $ が成り立つ. そのような順列が存在しない場合には,`-1` を出力してください. 数列の辞書順とは? 相異なる数列 $ S $ と数列 $ T $ の大小を判定するアルゴリズムを以下に説明します. 以下では $ S $ の $ i $ 番目の要素を $ S_i $ のように表します.また, $ S $ が $ T $ より辞書順で小さい場合は $ S\ \lt\ T $ ,大きい場合は $ S\ \gt\ T $ と表します. 1. $ S $ と $ T $ のうち長さが短い方の文字列の長さを $ L $ とします.$ i=1,2,\dots,L $ に対して $ S_i $ と $ T_i $ が一致するか調べます. 2. $ S_i\ \neq\ T_i $ である $ i $ が存在する場合,そのような $ i $ のうち最小のものを $ j $ とします.そして,$ S_j $ と $ T_j $ を比較して, $ S_j $ が $ T_j $ より(数として)小さい場合は $ S\ \lt\ T $ ,大きい場合は $ S\ \gt\ T $ と決定して,アルゴリズムを終了します. 3. $ S_i\ \neq\ T_i $ である $ i $ が存在しない場合, $ S $ と $ T $ の長さを比較して,$ S $ が $ T $ より短い場合は $ S\ \lt\ T $ ,長い場合は $ S\ \gt\ T $ と決定して,アルゴリズムを終了します.

Input Format

入力は以下の形式で標準入力から与えられます. > $ N $ $ K $

Output Format

条件を満たす順列 $ A $ のうち,辞書順最小のものを次の形式で出力してください. > $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ そのような順列が存在しない場合には,`-1` を出力してください.

Explanation/Hint

### 制約 - $ 2\leq\ N\leq\ 3\times\ 10^5 $ - $ 1\leq\ K\leq\ N\ -\ 1 $ ### Sample Explanation 1 条件を満たす順列は,$ (2,\ 3,\ 1) $ と $ (3,\ 1,\ 2) $ の $ 2 $ つです.例えば $ (2,\ 3,\ 1) $ は - $ \lvert\ A_1\ -\ 1\rvert\ =\ 1\ \geq\ K $ - $ \lvert\ A_2\ -\ 2\rvert\ =\ 1\ \geq\ K $ - $ \lvert\ A_3\ -\ 3\rvert\ =\ 2\ \geq\ K $ であるため条件を満たしています.