Pagini recente » Profil margiki | Cod sursa (job #2389742) | Fotbal3 | Cod sursa (job #33966) | Cod sursa (job #1475238)
#include<stdio.h>
#define min(a,b) ((a)<(b)?(a):(b))
const long long INF = 100000000000000000;
int main(){
long long a[505][505];
long long d[505];
long long n,i,j,k,m;
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%lld",&n);
for(i=1; i<=n+1; ++i){
scanf("%lld", d+i);
}
for(i=1; i<=n; ++i){
a[i][i] = 0;
}
for(i=2; i<=n; ++i){
a[i-1][i] = d[i-1]*d[i]*d[i+1];
}
for(k=2; k<n; ++k){
for(i=1; i<=n-k; ++i){
m = INF;
for(j=i; j < i+k; ++j){
m = min(m,a[i][j] + a[j+1][i+k] + d[i]*d[j+1]*d[i+k+1]);
}
a[i][i+k] = m;
}
}
printf("%lld",a[1][n]);
return 0;
}