最优二叉树(霍夫曼树)的应用
#include<iostream>
#include<queue>
using namespace std;
int main(){
int n;
cin>>n;
priority_queue<int,vector<int>,greater<int>> a;
for(int i=1;i<=n;i++){
int x;
cin>>x;
a.push(x);
}
int sum=0;
while(a.size()!=1){
int i=a.top();
a.pop();
int j=a.top();
a.pop();
sum+=i+j;
a.push(i+j);
}
cout<<sum;
return 0;
}