AT_stpc2025_1_b Increasing Swaps

Description

$ (1, 2, \dots, N) $ の順列 $ P = (P_1, P_2, \dots, P_N) $ が与えられます。 長さ $ N - 1 $ の正整数列 $ T = (T_1, T_2, \dots, T_{N - 1}) $ に対して、 $ f(T) $ を以下の問題で出力される値と定義します。 > あなたは $ P $ に対する操作を好きな回数 ( $ 0 $ 回でもよい) 行うことができます。 $ t $ 番目の操作では、以下の操作を行います。 > > - $ T_i \le t $ を満たす $ i $ を昇順に並べた列を $ I $ とする。 $ j = 1, 2, \dots, |I| $ の順に、 $ P_{I_j} $ と $ P_{I_j + 1} $ をスワップする。( $ P_{I_j + 1} $ は $ P_{I_{j + 1}} $ ではないことに注意すること。) > > $ P $ を昇順にソートするのに必要な操作回数の最小値を出力してください。ただし、ソートできないならば $ {10}^{100} $ を出力してください。 すべての正整数列 $ T $ に対する $ f(T) $ の最小値を求めてください。なお、この問題の制約下で、 $ f(T) < {10}^{100} $ を満たす $ T $ が必ず存在することが証明できます。

Input Format

入力は以下の形式で与えられる。 > $ N $ $ P_1 $ $ P_2 $ $ \cdots $ $ P_N $

Output Format

答えを出力せよ。

Explanation/Hint

### 部分点 - 追加の制約 $ N \le 400 $ を満たすデータセットに正解した場合は $ 30 $ 点が与えられる。 ### Sample Explanation 1 $ T=(2,1,2) $ とすると、 $ 1 $ 番目の操作で $ P=(4,1,2,3) $ となり、 $ 2 $ 番目の操作で $ P=(1,2,3,4) $ となるため、 $ f(T) = 2 $ が成り立ちます。 $ f(T) < 2 $ を満たす $ T $ は存在しないため答えは $ 2 $ となります。 ### Constraints - 入力はすべて整数 - $ 2 \le N \le 5000 $ - $ 1 \le P_i \le N $ - $ P_i \ne P_j $ $ (i \ne j) $