atcoder#ABC261F. [ABC261F] Sorting Color Balls

[ABC261F] Sorting Color Balls

配点 : 500500

問題文

NN 個の球が左右一列に並んでいます。 左から ii 番目の球の色は色 CiC_i であり、整数 XiX_i が書かれています。

高橋君の目標は球を左から右に見た時に書かれている数が非減少になるように球を並べ替えることです。 言い換えれば、高橋君の目標は、任意の 1iN11\leq i\leq N-1 について、左から i+1i+1 番目の球に書かれている数 が左から ii 番目に書かれている数以上であるようにすることです。

高橋君は目標を達成するために、次の操作を好きなだけ( 00 回でも良い )繰り返すことができます。

1iN11\leq i\leq N-1 をみたす整数 ii を選ぶ。 左から ii 番目の球と i+1i+1 番目の球の色が異なっているならば、コストを 11 支払う。 (色が等しいならばコストを支払う必要は無い。) 左から ii 番目の球と i+1i+1 番目の球を入れ替える。

高橋君が目標を達成するために支払う必要のあるコストの最小値を求めてください。

制約

  • 2N3×1052 \leq N \leq 3\times 10^5
  • 1CiN1\leq C_i\leq N
  • 1XiN1\leq X_i\leq N
  • 入力は全て整数

入力

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

NN

C1C_1 C2C_2 \ldots CNC_N

X1X_1 X2X_2 \ldots XNX_N

出力

高橋君が支払う必要のあるコストの最小値を整数で出力せよ。

5
1 5 2 2 1
3 2 1 2 1
6

球の情報を (,整数)(色, 整数) で表すとします。 最初の状態は (1,3)(1,3), (5,2)(5,2), (2,1)(2,1), (2,2)(2,2), (1,1)(1,1) です。 例えば、高橋君は次のように操作を行うことができます。

  • 左から 11 番目の球 (色 11) と 22 番目の球 (色 55) を入れ替える。 球は左から (5,2)(5,2), (1,3)(1,3), (2,1)(2,1), (2,2)(2,2), (1,1)(1,1) となる。
  • 左から 22 番目の球 (色 11) と 33 番目の球 (色 22) を入れ替える。 球は左から (5,2)(5,2), (2,1)(2,1), (1,3)(1,3), (2,2)(2,2), (1,1)(1,1) となる。
  • 左から 33 番目の球 (色 11) と 44 番目の球 (色 22) を入れ替える。 球は左から (5,2)(5,2), (2,1)(2,1), (2,2)(2,2), (1,3)(1,3), (1,1)(1,1) となる。
  • 左から 44 番目の球 (色 11) と 55 番目の球 (色 11) を入れ替える。 球は左から (5,2)(5,2), (2,1)(2,1), (2,2)(2,2), (1,1)(1,1), (1,3)(1,3) となる。
  • 左から 33 番目の球 (色 22) と 44 番目の球 (色 11) を入れ替える。 球は左から (5,2)(5,2), (2,1)(2,1), (1,1)(1,1), (2,2)(2,2), (1,3)(1,3) となる。
  • 左から 11 番目の球 (色 55) と 22 番目の球 (色 22) を入れ替える。 球は左から (2,1)(2,1), (5,2)(5,2), (1,1)(1,1), (2,2)(2,2), (1,3)(1,3) となる。
  • 左から 22 番目の球 (色 55) と 33 番目の球 (色 11) を入れ替える。 球は左から (2,1)(2,1), (1,1)(1,1), (5,2)(5,2), (2,2)(2,2), (1,3)(1,3) となる。

最後の操作の後で球に書かれている数は左から順に 1,1,2,2,31,1,2,2,3 となっているため、高橋君は目的を達成しています。

1,2,3,5,6,71,2,3,5,6,7 回目の操作にコストが 11 ずつかかるため、 このとき合計でコストは 66 かかり、このときが最小となります。 44 回目の操作では、入れ替えた球の色がともに色 11 であるためコストがかからないことに注意してください。

3
1 1 1
3 2 1
0

すべての球の色は同じであるため、球の入れ替えにコストがかかることはありません。

3
3 1 2
1 1 2
0

高橋君は一度も操作を行わずとも、目的を達成できています。