#P0310. 小田在努力切割木板

小田在努力切割木板

小田的木板

题目描述

瑞瑞想要亲自修复在他的一个小牧场周围的围栏。

他测量栅栏并发现他需要 nn 根木板,每根的长度为整数 lil_i。于是,他买了一根足够长的木板,长度为所需的 nn 根木板的长度的总和,他决定将这根木板切成所需的 nn 根木板(瑞瑞在切割木板时不会产生木屑,不需考虑切割时损耗的长度)。

瑞瑞切割木板时使用的是一种特殊的方式,这种方式在将一根长度为 xx 的木板切为两根时,需要消耗 xx 个单位的能量。瑞瑞拥有无尽的能量,但现在提倡节约能量,所以作为榜样,他决定尽可能节约能量。显然,总共需要切割 (n1)(n-1) 次,问题是,每次应该怎么切呢?请编程计算最少需要消耗的能量总和。

输入描述

输入的第一行是整数,表示所需木板的数量 nn

22 到第 (n+1)(n + 1) 行,每行一个整数,第 (i+1)(i + 1) 行的整数 lil_i 代表第 ii 根木板的长度 lil_i

输出描述

一个整数,表示最少需要消耗的能量总和。

输入输出样例

输入 #1

3
8
5
8

输出 #1

34

说明/提示

【样例 1 解释】

将长度为 2121 的木板,第一次切割为长度为 88 和长度为 1313 的,消耗 2121 个单位的能量,第二次将长度为 1313 的木板切割为长度为 5588 的,消耗 1313 个单位的能量,共消耗 3434 个单位的能量,是消耗能量最小的方案。

【数据范围】

对于 50%50\% 的数据,保证 1n2×1031\le n \le 2 \times 10^3

对于 100%100\% 的数据,保证 1n2×1051\le n \le 2 \times 10^51li5×1041 \leq l_i \leq 5 \times 10^4