#abc119c. [abc119_c]Synthetic Kadomatsu
[abc119_c]Synthetic Kadomatsu
题目描述
你有 根竹子,它们的长度分别为 (单位为厘米)。
你的目标是使用其中一些竹子(可能是全部)获得三根长度为 的竹子。为此,你可以使用以下三种魔法中的任意数量:
- 延伸魔法:消耗 MP(魔法点数)。选择一根竹子并将其长度增加 。
- 缩短魔法:消耗 MP。选择一根长度至少为 的竹子,并将其长度减少 。
- 组合魔法:消耗 MP。选择两根竹子并将它们结合成一根竹子。这根新竹子的长度等于两根竹子的长度之和。(之后,可以对这根竹子继续使用其他魔法。)
至少需要消耗多少 MP 才能实现目标?
约束条件
- 输入中的所有值均为整数。
输入
从标准输入读取数据,具体格式如下:
:
输出
打印实现目标所需的最小 MP 数量。
示例输入 1
5 100 90 80
98
40
30
21
80
示例输出 1
23
我们从五根竹子 中获得了长度为 的三根竹子。我们已经有一根长度为 的竹子,并且可以使用以下魔法获得长度为 的竹子,总共花费了 MP,这是最优解。
- 两次在长度为 的竹子上使用延伸魔法,得到长度为 的竹子(消耗了 MP)。
- 在长度为 的竹子上使用组合魔法,得到长度为 的竹子(消耗了 MP)。
- 在长度为 的竹子上使用缩短魔法,得到长度为 的竹子(消耗了 MP)。
- 在步骤 中得到的长度为 的竹子和步骤 中得到的长度为 的竹子上使用组合魔法,得到长度为 的竹子(消耗了 MP)。
示例输入 2
8 100 90 80
100
100
90
90
90
80
80
80
示例输出 2
0
如果我们已经有了所有所需长度的竹子,则所需的 MP 数量为 。正如这里所示,我们不一定需要使用所有的竹子。
示例输入 3
8 1000 800 100
300
333
400
444
500
555
600
666
示例输出 3
243