CafeCoder Test 001
コンテスト日時
2020/09/21 (Mo) 21:00 - 22:30

F - UTBE

Flavor
2
s
1024
MB
350

問題文

チューブの中に $N$ 個の玉が詰まっています。玉にはそれぞれ $1$ から $N$ の番号が割り当てられており、チューブの左端にあるものから順番に $A_1,A_2,\cdots ,A_N$ とします。ここで、このチューブに対して以下の操作を施していきます。

  • チューブ内でもっとも番号の小さい玉が端(左右を問わない)にあるとき、これを石に変える
  • チューブの左端から玉or石を $1$ つ取り出し、右端へ入れる
  • チューブの右端から玉or石を $1$ つ取り出し、左端へ入れる

チューブ内のすべての玉を石に変えるのに必要な操作回数の最小値を求めてください。

制約

  • $1\leq N \leq 150000$
  • $1\leq A_i \leq N$
  • $A$ は $1$ から $N$ までの整数を並び替えた順列
  • 入力はすべて整数です

入力

入力は以下の形式で与えられる。

$N$  
$A_1\quad A_2\quad \cdots A_N$

出力

チューブ内のすべての玉を石に変えるのに必要な操作回数の最小値を出力してください。

入力例 1
3 1 2 3
出力例 1
4

まず1番の玉が左端にあるので、これを石に変えます。次に3番の玉を左端に移動させると、2番の玉が右端に出てくるのでこれを石に変え、最後に3番の玉を石に変えます。これにより合計4回の操作ですべての玉を石に変えることができました。

入力例 2
5 5 1 4 2 3
出力例 2
11
入力例 3
10 5 8 4 10 2 3 9 7 6 1
出力例 3
32
提出
C++23 (g++ 12.2.0)