Pagini recente » Cod sursa (job #1025234) | Cod sursa (job #662971) | Cod sursa (job #293373) | Cod sursa (job #728412) | Cod sursa (job #379879)
Cod sursa(job #379879)
#include <stdio.h>
long n, v[512], i, j, z;
long long cost[512][512];
inline long long min(long long a, long long b) {
if (a < b) return a;
return b;
}
int main() {
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
scanf("%ld", &n);
scanf("%ld", &v[0]);
for (i = 1; i <= n; ++i) {
scanf("%ld", &v[i]);
}
for (i = 1; i <= n; ++i) cost[i][i] = 0;
for (i = 1; i < n; ++i) cost[i][i + 1] = (long long)(v[i - 1] * v[i] * v[i + 1]);
for (i = 2; i < n; ++i) {
for (j = 1; j <= n - i; ++j) {
cost[j][i + j] = 20000000000000000LL;
for (z = j; z <= j + i - 1; ++z) {
cost[j][i + j] = min(cost[j][i + j], cost[j][z] + cost[z + 1][i + j] + (long long)(v[j - 1] * v[z] * v[i + j]));
}
}
}
printf("%lld", cost[1][n]);
return 0;
}