題目描述
輸入
輸出
示例輸入
3 1 2 9
示例輸出
15
#include <iostream>
#include <queue>
#include<functional>
#include<vector>
using namespace std;
struct cmp//定義比較結構
{
bool operator()(int &a,int &b)
{
return a>b;//最小值優先
}
};
int main()
{
int k,i,n,m,sum;
priority_queue <int,vector<int>,cmp> q;
while(cin>>n)
{
sum = 0;
for(i = 0; i < n; i++)
{
cin>>k;
q.push(k);
}
while(!q.empty())
{
k = q.top();
q.pop();
m = q.top();
q.pop();//取出兩個元素
sum += (k + m);
if(!q.empty())
q.push(k + m);
else
{
cout<<sum<<endl;
break;
}
}
}
return 0;
}