Pagini recente » Cod sursa (job #3164649) | Cod sursa (job #3197410) | Cod sursa (job #684349) | Cod sursa (job #3250212) | Cod sursa (job #379908)
Cod sursa(job #379908)
#include <stdio.h>
long n, v[512];
long long cost[512][512], sum, INF;
int main() {
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
scanf("%ld", &n);
scanf("%ld", &v[0]);
for (int i = 1; i <= n; ++i) {
scanf("%ld", &v[i]);
}
INF = (1 << 30); INF = INF * INF;
for ( int i = 1; i <= n; ++i) cost[i][i] = 0;
for ( int i = 1; i < n; ++i) cost[i + 1][i] = 1LL * v[i - 1] * v[i] * v[i + 1];
for (int i = 2; i < n; ++i) {
for (int j = 1; j <= n - i; ++j) {
long long *r = cost[i + j];
r[j] = INF;
for (int z = j; z <= j + i - 1; ++z) {
sum = cost[z][j] + r[z + 1];
sum += v[j - 1] * v[z] * v[i + j];
if (r[j] > sum) {
r[j] = sum;
}
}
}
}
printf("%lld", cost[n][1]);
return 0;
}