给定一个长度为 n 的数组 a=[a1,a2,…,an]。可以任意交换数组中任意两个元素任意次(也可以不交换),使得可以自由调整顺序。然后定义一次“合井”操作:
要求经过恰好 n−1 次“合井”操作,使得最终数组只有一个数,问最少花费多少代价?
小红拿到一个长度为 n 的数组 a1,a2,...,an ,下标从 1 开始定义一次“合井”操作为:
选定任意的两个相邻的元素 ai 和 ai+1 ,将它们合并成一个数,其余元素按照原有顺序从前到后依次拼接。这个数等于 ai 和 ai+1 的最大值,花费代价也是 ai 和 ai+1 的最大值,数组长度减少 1 。
例如 a=[1,2,3,4,5] ,小红可以选定 a2 和 a3,合井成 3,数组变为 [1,3,4,5],花费代价 3 。
在执行上述的"合并"操作前,小红可以选择任意两个元素,将它们交换任意次(也可以不交换)。求解,执行恰好 n−1轮“合并“操作,使得将数组 a 合并的只剩一个数,最少需要花费多少代价?
第一行输入一个整数 n(1≦n≦105),表示数组长度。
第二行输入 n 个整数 a1,a2,...,an(1≦ai≦109) 代表数组元素。
输出一个整数,表示最小花费。
输入
3
3 2 1
输出
5
说明
在这个样例中,有两种直接合并的方法:
先合并 3,2 ,花费 max{3,2}=3;再合并{3,1},花费 max{3,1}=3。总花费 6 。
先合并 2,1,花费 max{2,1}=1;再合并 {3,2},花费 max{3,2}=3。总花费 5 。
输入
5
1 4 5 3 2
输出
14