#include<iostream> #include<queue> using namespace std; priority_queue<int, vector<int>, greater<int> > p; //定义小根堆 int main(){ int n,i,x,y,s=0; cin>>n; //将赋值的数推入队列 for(i=1;i<=n;i++){ cin>>x; p.push(x); } for(i=1;i<=n-1;i++){ x = p.top(); p.pop(); y = p.top(); p.pop(); p.push(x+y); s = s + x+y; } cout<<s; return 0; } /************************************************************** Problem: 1752 User: admin Language: C++ Result: Accepted Time:22 ms Memory:2212 kb ****************************************************************/