Pagini recente » Borderou de evaluare (job #1170029) | Cod sursa (job #2985143) | preONI 2008 - Clasament Runda 1, Clasele 11-12 | Cod sursa (job #768627) | Cod sursa (job #815496)
Cod sursa(job #815496)
#include <algorithm>
#include <cstdio>
using namespace std;
inline int next_int() {
int d;
scanf("%d", &d);
return d;
}
bool seen[501][501];
int A[501], dp[501][501];
int 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] = 2e9;
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("%d", f(0, n - 1));
return 0;
}