Pagini recente » Cod sursa (job #1267852) | Cod sursa (job #3173352) | Cod sursa (job #715938) | Cod sursa (job #1683141) | Cod sursa (job #2000533)
#include<stdio.h>
#include<stdlib.h>
#define min(a, b) ((a)<(b)?(a):(b))
long long d[502];
long long m[502][502];
int main() {
FILE *fi, *fo;
int n;
int i, j, k;
fi = fopen("podm.in", "r");
fo = fopen("podm.out", "w");
fscanf(fi, "%d", &n);
for (i = 0; i <= n; i++) {
fscanf(fi, "%lld", &d[i]);
m[i][i] = 0;
}
for (i = 1; i <= n - 1; i++) {
m[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
}
long long val;
int r;
for (k = 2; k < n; k++) {
for (i = 1; i <= n - k; i++) {
r = i + k;
m[i][r] = m[i + 1][r] + d[i - 1] * d[i] * d[r];
for (j = i; j < r; j++) {
val = m[i][j] + m[j + 1][r] + d[i - 1] * d[j] * d[r];
m[i][r] = min(m[i][r], val);
}
}
}
fprintf(fo, "%lld", m[1][n]);
fclose(fi);
fclose(fo);
}