#include <map>
#include <set>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <string>
#include <time.h>
#include <cstdio>
#include <math.h>
#include <iomanip>
#include <cstdlib>
#include <limits.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define LL long long
#define MIN INT_MIN
#define MAX INT_MAX
#define PI acos(-1.0)
#define FRE freopen("input.txt","r",stdin)
#define FF freopen("output.txt","w",stdout)
#define N 20005
priority_queue<LL,vector<LL>,greater<LL> > pp;
int main () {
int n;
while (scanf("%d",&n) != -1) {
int i;
while (!pp.empty()) pp.pop();
LL d;
LL ans = 0;
for (i = 0; i < n; i++) {
scanf("%I64d",&d);
pp.push(d);
}
while (pp.size() != 1) {
LL a,b;
a = pp.top();
pp.pop();
b = pp.top();
pp.pop();
ans += (a + b);
pp.push(a + b);
}
if (n == 1) {
printf("%I64d\n",d);
continue;
}
printf("%I64d\n",ans);
}
return 0;
}
【哈夫曼树】POJ 3253
最新推荐文章于 2022-01-09 14:01:38 发布