Pagini recente » Cod sursa (job #1732877) | Cod sursa (job #972595) | Cod sursa (job #900232) | Cod sursa (job #131156) | Cod sursa (job #1475740)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 505;
const long long INF = (1LL << 62);
int n, A[NMAX];
long long DP[NMAX][NMAX];
void read() {
scanf("%d", &n);
for (int i = 1; i <= n + 1; i++)
scanf("%d", &A[i]);
}
void solve() {
for (int i= 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
DP[i][j] = INF;
for (int i = 1; i < n; i++)
DP[i][i + 1] = 1LL * A[i] * A[i + 1] * A[i + 2];
for (int k = 3; k <= n; k++) {
for (int st = 1; st <= n - k + 1; st++) {
int end = st + k - 1;
for (int i = st; i < end; i++) {
DP[st][end] = min(DP[st][end], DP[st][i] + DP[i + 1][end] + 1LL * A[st] * A[i + 1] * A[end + 1]);
}
}
}
printf("%lld\n", DP[1][n]);
}
int main() {
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
read();
solve();
return 0;
}