#AT1075. 合成的小田

合成的小田

题目描述

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

你的目标是使用这些竹子的某些(可能全部)来得到三根长度分别为A,B,CA,B,C的竹子。为此,你可以使用以下三种魔法任意次:

扩展魔法:消耗1个魔法点(MP)。选择一根竹子,将其长度增加1。

缩短魔法:消耗1个MP。选择一根长度至少为2的竹子,将其长度减少1。

合成魔法:消耗10个MP。选择两根竹子,将它们合并成一根竹子。这根新竹子的长度等于这两根竹子的长度之和。(此后,可以对这根竹子继续使用其他魔法)

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

输入

第一行4个整数,分别表示竹子的数量,A,B,CA,B,C的值 接下来第ii行为第i1i-1根竹子的长度

输出

输出实现目标最小需要的MP数量

5 100 90 80
98
40
30
21
80
23

样例解释

我们要从五段竹子98,40,30,21,80中得到长度为100,90,80的三段竹子。我们已经有一段长度为80的竹子,并且我们可以通过以下魔法以总共23个MP的总成本得到长度为100,90的竹子,这是最优解。 1.将长度为98的竹子使用扩展魔法两次,得到长度为100的竹子。(消耗的MP:2)

2.将长度为40,30的竹子使用合成魔法得到长度为70的竹子。(消耗的MP:10)

3.将长度为21的竹子使用缩短魔法一次,得到长度为20的竹子。(消耗的MP:1)

4.将第2步得到的长度为70的竹子和第3步得到的长度为20的竹子使用合成魔法得到长度为90的竹子。(消耗的MP:10)

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

样例解释

如果我们已经有所有所需长度的竹子,则所需的MP数量为0。就像这里看到的,我们不一定需要使用所有的竹子。

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

提示

3N8 3 \leq N \leq 8

1C<B<A1001 \leq C < B < A \leq 100

1li10001 \leq l_i \leq 1000

输入的所有值都是整数