#include <stdio.h> #include <string.h> #define max(a,b) (a>b?a:b) #define INF 0x3f3f3f3 int main() { int data[205],dp[205][205],sum=-1,n; int i,j,k,len; scanf("%d",&n); for(i=1;i<=n;i++) {scanf("%d",&data[i]); data[i+n]=data[i]; } for(len=2;len<=n;len++) for(i=1;i+len-1<2*n;i++) { j=i+len-1; for(k=i;k<j;k++) dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+data[i]*data[k+1]*data[j+1]); } for(i=1;i<=n;i++) if(sum<dp[i][i+n-1])sum=dp[i][i+n-1]; printf("%d\n",sum); return 0; } /************************************************************** Problem: 2264 User: admin Language: C Result: Accepted Time:58 ms Memory:1188 kb ****************************************************************/