题目要求最大代价,而代价是分割前的序列数字和,显然每次分离出最小的数,最后得到的代价最大。
需要注意的是,最后的结果可能会爆int,所以用long long存答案。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 100000+10;
int main()
{
    int n,a[maxn];
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1);
    ll ans=0;
    for(int i=1;i<=n;i++)
    {
        ans+=a[i]*i;
    }
    ans-=a[n];
    cout<<ans<<endl;
    return 0;
}

谢谢阅读!
祝你学习愉快!