开不开O2都是60分,3个点TLE了。
#include<bits/stdc++.h>
using namespace std;
long long n;
priority_queue<long long,vector<long long>,greater<long long> > q;
int main(){
long long n,x;
cin>>n;
long long ans=0;
for (int i=1;i<=n;i++){
cin>>x;
q.push(x);
}
for (int i=1;i<n;i++){
long long a,b;
a=q.top();
q.pop();
b=q.top();
q.pop();
ans+=a+b;
q.push(a+b);
}
cout<<ans<<endl;
return 0;
}
参考了一个题解的思路,重新写,还是60分,就觉得题解不行,又改回去了。