分析:实际上是哈夫曼编码,但是本题数据量很小,可以用优先队列做;
#include <cstdio>
#include <queue>
using namespace std;
int main()
{
int n, x;
while(scanf("%d", &n), n) {
priority_queue<int, vector<int>, greater<int> > q;
for(int i=0; i<n; i++) { scanf("%d", &x); q.push(x); }
int ans = 0;
for(int i=1; i<n; i++) {
int a = q.top(); q.pop();
a += q.top(); q.pop();
ans += a;
q.push(a);
}
printf("%d\n", ans);
}
return 0;
}