AT_arc031_3 [ARC031C] 積み木
Description
[problemUrl]: https://atcoder.jp/contests/arc031/tasks/arc031_3
全て高さの違う $ N $ 個の積み木が $ 1 $ 列に並べられています。隣り合う $ 2 $ 個の積み木を並べ替える操作を何回か行って、一番高い積み木から順に左右へ低くなっていくようにする時、必要な最小の交換回数を求めてください。すなわち、並べ替えた後の $ i $ 番目の積み木の高さを $ Ai $ とし、一番高い積み木の位置を $ T $ としたとき、
- $ A1 $ < $ A2 $ < ... < $ AT $ > ... > $ AN-1 $ > $ AN $
を満たすように並べ替えるのに必要な最小の交換回数を求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ B1 $ $ B2 $ ... $ BN $
- $ 1 $ 行目には、積み木の数 $ N\ (1≦N≦10^5) $ がスペース区切りで与えられる。
- $ 2 $ 行目には、積み木の高さ $ Bi\ (1≦Bi≦N) $ が最初に並べられている順に与えられる。
- ただし、積み木の高さは全て異なる。すなわち、$ Bi≠Bj\ (i≠j) $ が成り立つ。
Output Format
並べ替えるのに必要な最小の交換回数を出力せよ。出力の末尾には改行をつけること。
Explanation/Hint
### 部分点
この問題には $ 2 $ つのデータセットがあり、データセット毎に部分点が設定されている。
- $ N≦100 $ を満たすデータセット $ 1 $ に正解した場合は $ 30 $ 点が与えられる。
- 追加制約のないデータセット $ 2 $ に正解した場合は、上記のデータセットとは別に $ 70 $ 点が与えられる。