atcoder#ABC302G. [ABC302G] Sort from 1 to 4

[ABC302G] Sort from 1 to 4

配点 : 625625

問題文

全ての要素が 11 以上 44 以下の整数である、長さ NN の数列 A=(A1,A2,,AN)A=(A_1,A_2,\ldots,A_N) が与えられます。

高橋君は次の操作を何回でも (00 回でも良い) 繰り返し行う事ができます。

  • 1iをみたす整数の組1\leq i をみたす整数の組 (i,j)を選び、 を選び、A_iA_j$ を交換する。

数列 AA を広義単調増加にするために必要な操作回数の最小値を求めてください。 ただし、数列 AA が広義単調増加であるとは、1iN11\leq i\leq N-1 をみたすすべての整数について AiAi+1A_i\leq A_{i+1} が成り立つことをさします。

制約

  • 2N2×1052 \leq N \leq 2\times 10^5
  • 1Ai41\leq A_i \leq 4
  • 入力はすべて整数

入力

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

NN

A1A_1 A2A_2 \ldots ANA_N

出力

数列 AA を広義単調増加にするために必要な操作回数の最小値を一行に出力せよ。

6
3 4 1 1 2 4
3

次のようにして 33 回の操作で AA を広義単調増加にすることができます。

  • (i,j)=(2,3)(i,j)=(2,3) を選び、A2A_2A3A_3 を交換する。A=(3,1,4,1,2,4)A=(3,1,4,1,2,4) となる。
  • (i,j)=(1,4)(i,j)=(1,4) を選び、A1A_1A4A_4 を交換する。A=(1,1,4,3,2,4)A=(1,1,4,3,2,4) となる。
  • (i,j)=(3,5)(i,j)=(3,5) を選び、A3A_3A5A_5 を交換する。A=(1,1,2,3,4,4)A=(1,1,2,3,4,4) となる。

22 回以下の操作で AA を広義単調増加にすることはできないため、このとき操作回数が最小となります。 よって、33 を出力します。

4
2 3 4 1
3