题目
#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
int main()
{
int n,i,m1,m2;
long long sum1=0,sum2=0;//主要sum 要用long long
int flag=0;
priority_queue<int,vector<int>,greater<int> > que;
int a[20000];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
que.push(a[i]);
}
while(1)
{
if(n==1)
{
printf("%d
",a[0]);
flag=1;
break;
}
else
{
m1=que.top();
que.pop();
m2=que.top();
que.pop();
sum1=m1+m2;
sum2+=sum1;
if(que.empty())
break;
que.push(sum1);
}
}
// if(que.empty())
if(flag==0)
printf("%lld
",sum2);
return 0;
}