Pagini recente » Cod sursa (job #546846) | Cod sursa (job #301827) | Cod sursa (job #1684750) | Cod sursa (job #2314331) | Cod sursa (job #435869)
Cod sursa(job #435869)
#include <cstdio>
#define Inf 9223372036854775807LL
long long opt[512][512];
int main() {
int i, j, k, l, m, N;
long long cant, col[512], lin[512];
freopen("podm.in", "r", stdin);
// citesc numarul de matrice
scanf("%d", &N);
// citesc dimensiunile matricelor
for (i = 0; i <= N; ++i) {
scanf("%lld", &col[i]);
if (i >= 1) {
lin[i] = col[i - 1];
}
}
// iterez
for (k = 2; k <= N; ++k) {
m = N - k + 1;
for (i = 1; i <= m; ++i) {
j = i + k - 1;
// infinit
opt[i][j] = Inf;
// incerc matrice mai multe
for (l = i; l < j; ++l) {
if ((cant = opt[i][l] + opt[l + 1][j] + lin[i] * col[l] * col[j]) < opt[i][j]) {
opt[i][j] = cant;
}
}
}
}
freopen("podm.out", "w", stdout);
// scriu rezultatul inmultirii
printf("%lld\n", opt[1][N]);
return 0;
}