代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[209];
int dp[209][209];
int dp2[209][209];
int s[209];
int main(){
memset(dp,0x3f,sizeof(dp));
memset(dp2,-1,sizeof(dp2));
cin >> n;
for(int i = 1;i<=n;i++){
cin >> a[i];
a[i+n] = a[i];
}
for(int i = 1;i<=n*2;i++){
s[i] = s[i-1] + a[i];
dp[i][i]=0;
dp2[i][i] = 0;
}
for(int len = 2;len <= n;len++){
for(int l = 1;l+len-1<=2*n;l++){
int r = l+len-1;
for(int k=l;k<r;k++){
dp[l][r] = min(dp[l][r], dp[l][k]+dp[k+1][r]+s[r]-s[l-1]);
dp2[l][r] = max(dp[l][r], dp[l][k]+dp[k+1][r]+s[r]-s[l-1]);
}
}
}
int maxn = -1;
int minn = 0x3f3f3f3f;
for(int i = 1;i<=n;i++){
maxn = max(maxn,dp2[i][i+n-1]);
minn = min(minn,dp[i][i+n-1]);
}
cout << minn << "\n" << maxn;
}