Pagini recente » Cod sursa (job #439807) | Cod sursa (job #1382902) | Cod sursa (job #261493) | Cod sursa (job #328610) | Cod sursa (job #815499)
Cod sursa(job #815499)
#include <algorithm>
#include <cstdio>
using namespace std;
inline int next_int() {
int d;
scanf("%d", &d);
return d;
}
bool seen[501][501];
long long A[501], dp[501][501];
long long f(int a, int b) {
if (a == b) {
return 0;
}
if (seen[a][b]) {
return dp[a][b];
}
seen[a][b] = true;
dp[a][b] = 1e18;
for (int i = a; i < b; i++) {
dp[a][b] = min(dp[a][b], A[a] * A[i + 1] * A[b + 1] + f(a, i) + f(i + 1, b));
}
return dp[a][b];
}
int main() {
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
int n = next_int();
for (int i = 0; i <= n; i++) {
A[i] = next_int();
}
printf("%lld", f(0, n - 1));
return 0;
}