#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 501;
int n,a[maxn],f[maxn][maxn],s[maxn],t[maxn][maxn];
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
a[n+i]=a[i];
}
n*=2;
for(int i=1;i<=n;i++){
s[i]=s[i-1]+a[i];
}
memset(f,127,sizeof(f));
for(int i=1;i<=n;i++){
f[i][i]=0;
}
for(int i=1;i<n;i++){
for(int j=1;j<=n-i;j++){
for(int k=j;k<j+i;k++){
f[j][j+i]=min(f[j][j+i],f[j][k]+f[k+1][j+i]+s[j+i]-s[j-1]);
t[j][j+i]=max(t[j][j+i],t[j][k]+t[k+1][j+1]+s[j+i]-s[j-1]);
}
}
}
int ans=1<<30;
int k=0;
for(int i=1;i<=n/2;i++){
ans=min(ans,f[i][i+n/2-1]);
k=max(k,t[i][i+n/2-1]);
}
cout<<ans<<endl;
cout<<k<<endl;
return 0;
}
各位大佬,代码求调,最大值算不对,WA了中间三个点