100 atcoder#ARC144C. [ARC144C] K Derangement
[ARC144C] K Derangement
配点 : 点
問題文
正整数 が与えられます. から までの整数からなる順列 であって次の条件を満たすもののうち, 辞書順最小のものを求めてください.
- 任意の () に対して が成り立つ.
そのような順列が存在しない場合には,-1
を出力してください.
数列の辞書順とは?
相異なる数列 と数列 の大小を判定するアルゴリズムを以下に説明します.
以下では の 番目の要素を のように表します.また, が より辞書順で小さい場合は ,大きい場合は と表します.
- と のうち長さが短い方の文字列の長さを とします. に対して と が一致するか調べます.
- である が存在する場合,そのような のうち最小のものを とします.そして, と を比較して, が より(数として)小さい場合は ,大きい場合は と決定して,アルゴリズムを終了します.
- である が存在しない場合, と の長さを比較して, が より短い場合は ,長い場合は と決定して,アルゴリズムを終了します.
制約
入力
入力は以下の形式で標準入力から与えられます.
出力
条件を満たす順列 のうち,辞書順最小のものを次の形式で出力してください.
そのような順列が存在しない場合には,-1
を出力してください.
3 1
2 3 1
条件を満たす順列は, と の つです.例えば は
であるため条件を満たしています.
8 3
4 5 6 7 8 1 2 3
8 6
-1