优先队列
#include<iostream> #include<queue> using namespace std; int n,a[10005]; long long sum; priority_queue<int,vector<int>,greater<int> >q; void solve() { int i; cin>>n; for(i=1;i<=n;i++) { cin>>a[i]; q.push(a[i]); } while(q.size()>1) { int l1=q.top(); q.pop(); int l2=q.top(); q.pop(); sum+=l1+l2; q.push(l1+l2); } cout<<sum<<endl; } int main() { solve(); }