Pagini recente » Cod sursa (job #314242) | Cod sursa (job #525995) | Cod sursa (job #3155740) | Cod sursa (job #1385037) | Cod sursa (job #1375739)
#include<cstdio>
const int N=500;
const long long INF=1000000000001*500;
class Matrix{
public:
int x,y;
};
Matrix v[N+1];
long long d[N+1][N+1];
int n;
long long min2(long long a,long long b){
if(a<b)
return a;
return b;
}
long long dp(int l,int r){
if(d[l][r])
return d[l][r];
if(l==r)
return 0;
d[l][r]=INF+1;
for(int m=l;m<r;m++)
d[l][r]=min2(d[l][r],dp(l,m)+dp(m+1,r)+(long long)v[l].x*v[r].y*v[m].y);
return d[l][r];
}
int main(){
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&n);
scanf("%d",&v[1].x);
for(int i=2;i<=n;i++){
int nr;
scanf("%d",&nr);
v[i-1].y=nr;
v[i].x=nr;
}
scanf("%d",&v[n].y);
printf("%lld",dp(1,n));
return 0;
}