atcoder#ABC232F. [ABC232F] Simple Operations on Sequence

[ABC232F] Simple Operations on Sequence

配点 : 500500

問題文

長さ NN22 つの整数列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N) および B=(B1,B2,BN)B = (B_1, B_2 \ldots, B_N) が与えられます。

整数列 AA に対して、「下記の 22 つの操作のうちどちらかを行う」ということを好きな回数( 00 回でもよい)繰り返すことができます。

  • 1iN1 \leq i \leq N を満たす整数 ii を選び、AiA_i の値を 11 増やすか 11 減らす。この操作には XX 円の費用がかかる。
  • 1iN11 \leq i \leq N-1 を満たす整数 ii を選び、AiA_i の値と Ai+1A_{i+1} の値を入れ替える。この操作には YY 円の費用がかかる。

上記の繰り返しによって整数列 AA を整数列 BB に一致させるためにかかる合計費用としてあり得る最小値を出力してください。

制約

  • 2N182 \leq N \leq 18
  • 1X1081 \leq X \leq 10^8
  • 1Y10161 \leq Y \leq 10^{16}
  • 1Ai,Bi1081 \leq A_i, B_i \leq 10^8
  • 入力はすべて整数

入力

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

NN XX YY

A1A_1 A2A_2 \ldots ANA_N

B1B_1 B2B_2 \ldots BNB_N

出力

AABB に一致させるためにかかる合計費用としてあり得る最小値を求めよ。

4 3 5
4 2 5 2
6 4 2 1
16

はじめ、A=(4,2,5,2)A = (4, 2, 5, 2) です。 下記の通りに操作を行うと、AABB に一致させることができます。

  • X=3X = 3 円払い、A3A_3 の値を 11 増やす。その結果 A=(4,2,6,2)A = (4, 2, 6, 2) となる。
  • Y=5Y = 5 円払い、A2A_2 の値と A3A_3 の値を入れ替える。その結果 A=(4,6,2,2)A = (4, 6, 2, 2) となる。
  • Y=5Y = 5 円払い、A1A_1 の値と A2A_2 の値を入れ替える。その結果 A=(6,4,2,2)A = (6, 4, 2, 2) となる。
  • X=3X = 3 円払い、A4A_4 の値を 11 減らす。その結果 A=(6,4,2,1)=BA = (6, 4, 2, 1) = B となる。

上記の操作にかかる費用の合計は 3+5+5+3=163+5+5+3 = 16 円であり、これが最小となります。

5 12345 6789
1 2 3 4 5
1 2 3 4 5
0

AABB は初めから一致しているため、一度も操作を行う必要がありません。

18 20719114 5117250357733867
10511029 36397527 63027379 44706927 47672230 79861204 57882493 42931589 51053644 52300688 43971370 26515475 62139996 41282303 34022578 12523039 6696497 64922712
14720753 4621362 25269832 91410838 86751784 32741849 6602693 60719353 28911226 88280613 18745325 80675202 34289776 37849132 99280042 73760634 43897718 40659077
13104119429316474

入力や出力が 3232 bit 整数型に収まらないことがあることに注意してください。