示例中说明:
[3,2,4,1]重排->[1,2,3,4]->[1],[2,3,4]->[1],[2],[3,4]->[1],[2],[3],[4]。
所以用前缀和记录一下全部的值,在执行n-1次操作,每次减去除当前下标数组的所有值。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
long long n,a[100005],ans=0,sum=0;//十年oi一场空,不开long long见祖宗
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i]; //前缀和
}
sort(a+1,a+n+1);
for(int i=1;i<=n-1;i++) //n-1次操作
{
ans+=sum; //每次减
sum-=a[i];
}
cout<<ans<<endl;
return 0;
}
京公网安备 11010502036488号