示例中说明:
[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; }