题解:
非常简单的一道贪心题目,题目想让你把一串子序列切割成长度为1的字串,每次切割的代价是被切割序列的总和,这样的话我们肯定是让序列中越大的数约往后切割,因为越大的数会对每次切割产生代价会越大,所以你是尽可能的想让这个数造成更大的代价,所以我们按照从小到大的顺序排序,之后从前往后切割就可以了。

#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 1e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 1e9 + 7;
using namespace std;
int a[maxn];
int main()
{
    int n;
    cin>>n;
    ll sum=0;
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
        sum+=a[i];
    }
    sort(a,a+n);
    ll ans=0;
    for(int i=0;i<n-1;i++){
       ans+=sum;
       sum-=a[i];
    }
    cout<<ans<<endl;
    return 0;

}