Pagini recente » Cod sursa (job #2593496) | Cod sursa (job #1264190) | Cod sursa (job #2119934) | Cod sursa (job #2028773) | Cod sursa (job #794765)
Cod sursa(job #794765)
#include <cstdio>
#define MINIM(a,b) ((a < b)? (a): (b))
int N;
typedef unsigned long long ull;
ull d[510], M[510][510];
void afisare() {
for (int i=0; i<N; ++i) {
for (int j=0; j<N; ++j)
printf("%20lld ", M[i][j]);
printf("\n");
}
}
int main () {
freopen("podm.in","rt",stdin);
freopen("podm.out","wt",stdout);
scanf("%d", &N);
for (int i=0; i<=N; ++i) {
scanf("%d ", &d[i]);
if (i>1) M[i-2][i-1]=d[i-2]*d[i-1]*d[i];
}
for (int j=2; j<N; ++j) {
for (int i=0; i+j<N; ++i) {
M[i][i+j]=~0;
for (int k=i; k<i+j; ++k)
M[i][i+j]=MINIM(M[i][i+j], M[i][k] + M[k+1][i+j] + d[i]*d[i+j+1]*d[k+1]);
}
}
//afisare();
printf("%lld", M[0][N-1]);
return 0;
}