** 确实,哈夫曼树就是基于贪心的思想,这个合并果子和哈夫曼树简直时一模一样。 **
//最先开始合并的果子,被计算的次数最多
//所以我们尽量要先合并重量小的果子
//这里用小根堆是真的秀!!
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
priority_queue<int, vector<int>, greater<int> > heap;
while(n--)
{
int x;
scanf("%d", &x);
heap.push(x);
}
int res=0;
while(heap.size()>1)
{
int a=heap.top(); heap.pop();
int b=heap.top(); heap.pop();
res+=a+b;
heap.push(a+b);
}
printf("%d\n", res);
return 0;
}