#abc119c. [abc119_c]Synthetic Kadomatsu

[abc119_c]Synthetic Kadomatsu

题目描述

你有 NN 根竹子,它们的长度分别为 l1,l2,...,lNl_1, l_2, ..., l_N(单位为厘米)。

你的目标是使用其中一些竹子(可能是全部)获得三根长度为 A,B,CA, B, C 的竹子。为此,你可以使用以下三种魔法中的任意数量:

  • 延伸魔法:消耗 11 MP(魔法点数)。选择一根竹子并将其长度增加 11
  • 缩短魔法:消耗 11 MP。选择一根长度至少为 22 的竹子,并将其长度减少 11
  • 组合魔法:消耗 1010 MP。选择两根竹子并将它们结合成一根竹子。这根新竹子的长度等于两根竹子的长度之和。(之后,可以对这根竹子继续使用其他魔法。)

至少需要消耗多少 MP 才能实现目标?

约束条件

  • 3N83 \leq N \leq 8
  • 1C<B<A10001 \leq C < B < A \leq 1000
  • 1li10001 \leq l_i \leq 1000
  • 输入中的所有值均为整数。

输入

从标准输入读取数据,具体格式如下:

NN AA BB CC l1l_1 l2l_2 : lNl_N

输出

打印实现目标所需的最小 MP 数量。

示例输入 1

5 100 90 80
98
40
30
21
80

示例输出 1

23

我们从五根竹子 98,40,30,21,8098, 40, 30, 21, 80 中获得了长度为 100,90,80100, 90, 80 的三根竹子。我们已经有一根长度为 8080 的竹子,并且可以使用以下魔法获得长度为 100,90100, 90 的竹子,总共花费了 2323 MP,这是最优解。

  1. 两次在长度为 9898 的竹子上使用延伸魔法,得到长度为 100100 的竹子(消耗了 22 MP)。
  2. 在长度为 40,3040, 30 的竹子上使用组合魔法,得到长度为 7070 的竹子(消耗了 1010 MP)。
  3. 在长度为 2121 的竹子上使用缩短魔法,得到长度为 2020 的竹子(消耗了 11 MP)。
  4. 在步骤 22 中得到的长度为 7070 的竹子和步骤 33 中得到的长度为 2020 的竹子上使用组合魔法,得到长度为 9090 的竹子(消耗了 1010 MP)。

示例输入 2

8 100 90 80
100
100
90
90
90
80
80
80

示例输出 2

0

如果我们已经有了所有所需长度的竹子,则所需的 MP 数量为 00。正如这里所示,我们不一定需要使用所有的竹子。

示例输入 3

8 1000 800 100
300
333
400
444
500
555
600
666

示例输出 3

243