0
已解决
#include<iostream>
using namespace std;
long long n,f[205][205];
struct node {
long long h,r;
} a[205];
int main(){
cin>>n;
for(int i=1; i<=n; i++) {
cin>>a[i].h;
if(i==1) {
a[n].r=a[i].h;
}
else {
a[i=1].r=a[i].h;
}
}
for(int i=1; i<=n; i++) {
a[i+n].h=a[i].h;
a[i+n].r=a[i].r;
}
for(int l=1; l<n; l++) {
for(int i=1; i<=2*n; i++) {
int j=l+i;
if(j>2*n) {
break;
}
for(int k=1; k<j; k++){
f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+a[i].h*a[k].r*a[i].r);
}
}
}
long long ans=-1;
for(int i=1; i<=n; i++)
ans=max(ans,f[i][i+n-1]);
cout<<ans;
return 0;
}
//为何Time Limit Exceeded:0分了?


