1 3 1 2 9
15
刚开始想的用list做一次一排序结果超时说明list::sort效率不高然后用优先队列结果数据比较坑假设果子数都为20000 则12000*20000大于int型范围需用long long型
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue>
#include<functional>
using namespace std;
int main()
{
int k,i,n,a;
scanf("%d",&k);
while(k--){
priority_queue<long long,vector<long long>,greater<long long> >Q;
scanf("%d",&n);
for(i=0;i<n;++i){
scanf("%d",&a);
Q.push(a);
}
if(n==1){
printf("%d\n",0);continue;
}
long long sum,ans=0;
while(!Q.empty()){
sum=0;
sum+=Q.top();Q.pop();
sum+=Q.top();Q.pop();
ans+=sum;
if(Q.empty())break;
Q.push(sum);
}
printf("%lld\n",ans);
}
return 0;
}
原文:http://blog.csdn.net/r1986799047/article/details/42715655