Pagini recente » Cod sursa (job #1289803) | Cod sursa (job #2299660) | Cod sursa (job #2088111) | Cod sursa (job #2811802) | Cod sursa (job #1493752)
#include<cstdio>
#define N 500
#define MULT 500000000000001
using namespace std;
long long d[N+1][N+1];
int v[N+1];
long long min(long long a,long long b){
return (a<b) ? a : b;
}
long long calc(int st,int dr,int k){
return d[st][k]+d[k+1][dr]+1LL*v[st-1]*v[k]*v[dr];
}
void rec(int st,int dr){
int i;
d[st][dr]=MULT;
for(i=st;i<dr;i++)
d[st][dr]=min(d[st][dr],calc(st,dr,i));
}
long long solve(int n){
int i,j;
for(i=1;i<=n;i++)
d[i][i]=0;
for(i=1;i<n;i++)
d[i][i+1]=1LL*v[i-1]*v[i]*v[i+1];
for(i=2;i<n;i++)
for(j=1;j+i<=n;j++)
rec(j,j+i);
return d[1][n];
}
int main(){
freopen ("podm.in","r",stdin);
freopen ("podm.out","w",stdout);
int n,i;
scanf ("%d",&n);
for(i=0;i<=n;i++)
scanf ("%d",&v[i]);
printf ("%lld",solve(n));
return 0;
}