P1090 合并果子
sakuya726
·
·
个人记录
#include <iostream>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <cmath>
#include <ctime>
#define MAX 2000000000
#define INF 2333330303.3
#define rg register
#define min(a,b) (a)<(b)?(a):(b)
#define max(a,b) (a)>(b)?(a):(b)
#define abs(a) ((a)>0?(a):-(a))
#define ll long long
using namespace std;
inline int read()
{
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
{
f=-1;
}
c=getchar();
}
while(c<='9'&&c>='0')
{
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return x*f;
}
int n,a[10001];
priority_queue<int,vector<int>,greater<int> > q;
ll sum,ans;
int main()
{
n=read();
for(rg int i=1;i<=n;++i)
{
a[i]=read();
q.push(a[i]);
}
while(q.size()!=1)
{
int top1=q.top();
q.pop();
int top2=q.top();
q.pop();
sum=top1+top2;
ans+=sum;
q.push(sum);
}
cout<<ans;
}