#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int main(int argc, char** argv) {
int n;
while(scanf("%d", &n) != EOF){
priority_queue<int, vector<int>, greater<int> > mpq;
while(n--){
int x;
scanf("%d", &x);
mpq.push(x);
}
int answer = 0;
while(mpq.size() > 1){
int a = mpq.top();
mpq.pop();
int b = mpq.top();
mpq.pop();
answer += a + b;
mpq.push(a + b);
}
cout << answer << endl;
}
return 0;
}
【计算机考研机试指南】第十章 数据结构二:哈夫曼树_北邮
最新推荐文章于 2024-10-03 23:25:47 发布