#include <iostream> #include <algorithm> using namespace std; const int N(209); int head[N]={0},f[N][N]={0}; int main() { int n,ans(0); cin>>n; for(int i=1;i<=n;i++) { cin>>head[i]; head[i+n]=head[i]; } for(int i=1;i<=2*n;i++) f[i][i]=0; for(int s=1;s<n;s++) for(int h=1;h<=2*n;h++) for(int mid=h;mid<h+s;mid++) if(h+s<=2*n) f[h][h+s]=max(f[h][h+s],f[h][mid]+f[mid+1][h+s]+head[h]*head[mid+1]*head[h+s+1]); for(int i=1;i<=n;i++) ans=max(ans,f[i][i+n-1]); cout<<ans<<endl; return 0; } /************************************************************** Problem: 2264 User: admin Language: C++ Result: Accepted Time:49 ms Memory:2244 kb ****************************************************************/