AT_arc180_b [ARC180B] Improve Inversions
Description
[problemUrl]: https://atcoder.jp/contests/arc180/tasks/arc180_b
$ (1,2,\cdots,N) $ の順列 $ P=(P_1,P_2,\cdots,P_N) $ が与えられます. また整数 $ K $ も与えられます.
あなたはこれから以下の操作を $ 0 $ 回以上行います.
- 整数 $ l,r $ ($ 1\ \leq\ l\ \ P_r $ である.
- 同じ組 $ (l,r) $ を今までに選んだことが一度もない.
- そして,$ P_l $ と $ P_r $ の値を入れ替える.
あなたは操作回数を最大化したいです. その方法を一つ求めてください.
Input Format
入力は以下の形式で標準入力から与えられる.
> $ N $ $ K $ $ P_1 $ $ P_2 $ $ \cdots $ $ P_N $
Output Format
以下の形式で答えを出力せよ.
> $ m $ $ l_1 $ $ r_1 $ $ l_2 $ $ r_2 $ $ \vdots $ $ l_m $ $ r_m $
ただしここで $ m $ は操作回数の最大値であり,$ l_i,r_i $ は $ i $ 回目の操作で選んだ $ l,r $ の値である. 複数の解がある場合は,どれを出力してもよい.
Explanation/Hint
### 制約
- $ 2\ \leq\ N\ \leq\ 500 $
- $ 1\ \leq\ K\ \leq\ N-1 $
- $ (P_1,P_2,\cdots,P_N) $ は $ (1,2,\cdots,N) $ の順列
- 入力される値はすべて整数
### Sample Explanation 1
この例では操作回数の最大値は $ 3 $ です. 出力例の操作の様子は以下のとおりです. - $ 1 $ 回目の操作: $ (l,r)=(2,3) $ を選ぶ.$ 1\ \leq\ 3-2,\ P_2\ >\ P_3 $ かつ $ (2,3) $ を選んだことはないので条件は満たされている.$ P_2,P_3 $ の値を入れ替え,$ P=(3,1,2) $ になる. - $ 2 $ 回目の操作: $ (l,r)=(1,3) $ を選ぶ.$ 1\ \leq\ 3-1,\ P_1\ >\ P_3 $ かつ $ (1,3) $ を選んだことはないので条件は満たされている.$ P_1,P_3 $ の値を入れ替え,$ P=(2,1,3) $ になる. - $ 3 $ 回目の操作: $ (l,r)=(1,2) $ を選ぶ.$ 1\ \leq\ 2-1,\ P_1\ >\ P_2 $ かつ $ (1,2) $ を選んだことはないので条件は満たされている.$ P_1,P_2 $ の値を入れ替え,$ P=(1,2,3) $ になる.