#include <bits/stdc++.h>
using namespace std;
priority_queue< int, vector <int>, greater <int> > q;
int main ()
{
ios::sync_with_stdio(false);
int n;
cin>>n;
for (int i=1;i<=n;i++) {
int x; cin>>x;
q.push(x);
}
int sum=0;
for (int i=1;i<=n-1;i++) {
int x=q.top(); q.pop();
int y=q.top(); q.pop();
x+=y;
sum+=x;
q.push(x);
}
cout<<sum<<endl;
return 0;
}
/*
input :
5
1 2 2 5 9
output:
37
*/
相关文章
- 数据结构--求二叉树节点最大值
- 【2018 ICPC亚洲区域赛徐州站 A】Rikka with Minimum Spanning Trees(求最小生成树个数与总权值的乘积)
- 4163 hzwer与逆序对 (codevs + 权值线段树 + 求逆序对)
- 【严蔚敏】【数据结构题集(C语言版)】1.17 求k阶斐波那契序列的第m项值的函数算法
- 洛谷 P4149 [IOI2011]Race-树分治(点分治,不容斥版)+读入挂-树上求一条路径,权值和等于 K,且边的数量最小
- Python算法与数据结构--求所有子数组的和的最大值
- 求一个java数据结构。可以实现里面放入的值不重复,而且可以方便的查找到是否有某个值。请说的详细点。
- CF E. Vasya and a Tree】 dfs+树状数组(给你一棵n个节点的树,每个点有一个权值,初始全为0,m次操作,每次三个数(v, d, x)表示只考虑以v为根的子树,将所有与v点距离小于等于d的点权值全部加上x,求所有操作完毕后,所有节点的值)
- poj1741 Tree (求树上任意两点之间权值和小于k的个数)(树分治)
- 动态求区间K大值(权值线段树)