#P5685. 切割木板

切割木板

题目描述

FarmerJohn{Farmer John}想修理牧场栅栏的某些小段。为此,他需要N(1<=N<=20,000){N(1<=N<=20,000)}块特定长度的木板,第i{i}块木板的长度为Li(1<=Li<=50,000){Li(1<=Li<=50,000)}

然后,FJ{FJ}去买了一块很长的木板,它的长度正好等于所有需要的木板的长度和.接下来的工作,当然是把它锯成需要的长度。FJ{FJ}忽略所有切割时的损失{--}你也应当忽略它。

FJ{FJ}郁闷地发现,他并没有锯子来把这块长木板锯开。于是他把这块长木板带到了FarmerDon{Farmer Don}的农场,想向FD{FD}借用锯子。 作为一个有商业头脑的资本家,FarmerDon{Farmer Don}没有把锯子借给FJ{FJ,}而是决定帮FJ{FJ}锯好所有木板,当然FJ{FJ}得为此付出一笔钱。锯开一块木板的费用,正比于木板的长度。

如果这块木板的长度是21{21,}那么锯开它的花费便是21{21}美分。 谈妥条件后,FD{FD}FJ{FJ}决定切割木板的顺序,以及每次切割的位置。

请你帮FJ{FJ}写一个程序,计算为了锯出他想要的木板,他最少要花多少钱。很显然,按不同的切割顺序来切开木板,FJ{FJ}的总花费可能不同,因为不同的切割顺序, 会产生不同的中间结果。

输入格式

1{1}行: 一个正整数N{N,}表示FJ{FJ}需要木板的总数

2..N+1{2..N+1}行: 每行包含一个整数,为FJ{FJ}需要的某块木板的长度

输出格式

1{1}行: 输出一个整数,即FJ{FJ}完成对木板的N1{N-1}次切割的最小花费

样例

输入样例

3
8
5
8

输出样例

34

提示

FJ{FJ}打算把一块长为21{21}的木板切成长度分别为8{8,}5{5,}8{8}的三段。

输出说明:

起初,木板的长度为21{21}。第一次切割木板花费21{21}美分,把木板切成长分别为13{13}8{8}的两块。

然后花费13{1 3}美分把长为13{13}的木板切成长为8{8}5{5}的两块。这样的总花费是21+13=34{21+13=34}美分。

如果第一次把木板切成长 为16{16}5{5}的两块,那么第二次切木板的花费就是16{16}美分,这样的总花费就是37{37}美分,比刚才花费34{34}美分的方案来的差。