#2236. 【基础】合并果子

【基础】合并果子

题目描述

在一个果园里,多多已经将所有果子打了下来,并且按果子的不同种类分成了不同的堆。多多决定把所有果子合成一堆。

每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。所有果子经过 n1n-1 次合并之后,就只剩下一堆了。多多总共消耗的体力等于每次合并所耗体力之和。

因为还要花大力气把这些果子搬回家,所以多多希望在合并果子时尽可能节省体力。假定每个果子重量都为 11,并且已知果子的种类数和每种果子的数量,请设计合并顺序,使多多耗费的体力最少,并输出最小体力耗费值。

例如有 33 种果子,数量依次为 1,2,91,2,9。可以先将 1122 两堆合并,新堆数量为 33,耗费体力为 33;再将新堆与原先第三堆合并,得到数量为 1212 的新堆,耗费体力为 1212。总耗费为 3+12=153+12=15,可以证明这是最小值。

输入格式

第一行输入一个整数 nn,表示果子的种类数。

第二行输入 nn 个整数,第 ii 个整数 aia_i 表示第 ii 种果子的数量。

输出格式

输出一个整数,表示最小的体力耗费值。

样例

3
1 2 9
15

数据范围

1n100001 \le n \le 100001ai200001 \le a_i \le 20000

输入数据保证答案小于 2312^{31}

来源

贪心 / 队列