atcoder#ABC233F. [ABC233F] Swap and Sort
[ABC233F] Swap and Sort
配点 : 点
問題文
を並び替えた長さ の順列 があります。
あなたが可能な操作は 種類あり、操作 は「 の 番目の要素と の 番目の要素を入れ替える」というものです。
操作を好きな順序で、合計 回以下行うことによって、 を昇順に並び替えることはできますか?
できるならば、操作手順を つ教えてください。できないならばその旨を伝えてください。
制約
- は を並び替えた順列
- ならば
- 入力に含まれる値は全て整数
入力
入力は以下の形式で標準入力から与えられる。
出力
を昇順に並び替えることができるならば以下の形式で出力せよ。
ここで、 は操作の回数を表し、 は 回目に行う操作が操作 であることを表す。 を満たさなければならないことに注意せよ。
を昇順に並び替えることができないならば、-1
と出力せよ。
6
5 3 2 4 6 1
4
1 5
5 6
1 2
2 3
3
4 2 1
は、$(5,3,2,4,6,1)\to (5,2,3,4,6,1)\to (5,2,3,4,1,6)\to (1,2,3,4,5,6)$ と変化します。
5
3 4 1 2 5
2
1 3
2 5
-1
を昇順に並び替えることはできません。
4
1 2 3 4
6
1 2
1 3
1 4
2 3
2 4
3 4
0
初めから が昇順に並んでいることもあります。
また、以下のような答えも正解になります。
4
5 5 5 5
操作の回数を最小化する必要はないことに注意してください。