Pagini recente » Cod sursa (job #1904089) | Cod sursa (job #1332964) | Cod sursa (job #1241874) | Cod sursa (job #446584) | Cod sursa (job #435844)
Cod sursa(job #435844)
#include <cstdio>
#define Inf 9223372036854775807LL
int N;
long long col[512], lin[512], opt[512][512];
void read() {
int i;
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];
}
}
}
void solve() {
int k, l, m, i, j;
long long cant;
for (k = 2; k <= N; ++k) {
int 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) {
cant = opt[i][l] + opt[l + 1][j] + lin[i] * col[l] * col[j];
if (cant < opt[i][j]) {
opt[i][j] = cant;
}
}
}
}
}
void write() {
freopen("podm.out", "w", stdout);
// scriu rezultatul inmultirii
printf("%lld\n", opt[1][N]);
}
int main() {
read();
solve();
write();
return 0;
}