#abc232f. [abc232_f]Simple Operations on Sequence

[abc232_f]Simple Operations on Sequence

问题描述

给定两个长度均为 NN 的整数序列: A=(A1,A2,ldots,AN)A = (A_1, A_2, \\ldots, A_N)B=(B1,B2ldots,BN)B = (B_1, B_2 \\ldots, B_N)

在序列 AA 上,你可以任意次数(可能为零次)以任意顺序执行以下两种操作中的一种。

  • 选择一个满足 1leqileqN1 \\leq i \\leq N 的整数 ii,增加或减少 AiA_i 的值 11,花费 XX 日元(日本货币)。
  • 选择一个满足 1leqileqN11 \\leq i \\leq N-1 的整数 ii,交换 AiA_iAi+1A_{i+1} 的值,花费 YY 日元。

输出将序列 AA 转换为序列 BB 所需的最小总花费。

约束条件

  • 2leqNleq182 \\leq N \\leq 18
  • 1leqXleq1081 \\leq X \\leq 10^8
  • 1leqYleq10161 \\leq Y \\leq 10^{16}
  • 1leqAi,Bileq1081 \\leq A_i, B_i \\leq 10^8
  • 输入中的所有值都是整数。

输入

输入的格式如下:

NN XX YY A1A_1 A2A_2 ldots\\ldots ANA_N B1B_1 B2B_2 ldots\\ldots BNB_N

输出

输出将 AA 转换为 BB 所需的最小总花费。


示例输入 1

4 3 5
4 2 5 2
6 4 2 1

示例输出 1

16

初始时,A=(4,2,5,2)A = (4, 2, 5, 2)
执行以下操作序列将 AA 转换为 BB

  • 支付 X=3X = 3 日元,将 A3A_3 的值增加 11,得到 A=(4,2,6,2)A = (4, 2, 6, 2)
  • 支付 Y=5Y = 5 日元,交换 A2A_2A3A_3 的值,得到 A=(4,6,2,2)A = (4, 6, 2, 2)
  • 支付 Y=5Y = 5 日元,交换 A1A_1A2A_2 的值,得到 A=(6,4,2,2)A = (6, 4, 2, 2)
  • 支付 X=3X = 3 日元,将 A4A_4 的值减少 11,得到 A=(6,4,2,1)A = (6, 4, 2, 1)

这些操作的总花费为 3+5+5+3=163+5+5+3 = 16 日元,是可能的最小值。


示例输入 2

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

示例输出 2

0

AABB 从一开始就相等,因此不需要任何操作。


示例输入 3

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

示例输出 3

13104119429316474

注意,输入或输出的值可能无法适应 3232 位整数类型。