Pagini recente » Cod sursa (job #2798038) | Cod sursa (job #2488793) | Cod sursa (job #1398868) | Cod sursa (job #206562) | Cod sursa (job #2290794)
#include <stdio.h>
#include <limits>
#include <algorithm>
using namespace std;
typedef long long T;
const int NMAX = 505;
const T DMAX = 10005;
int N;
T D[NMAX];
T m[NMAX][NMAX];
int main() {
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
scanf("%d", &N);
for (int i = 0; i <= N; ++i) {
scanf("%lld", &D[i]);
}
for (int i = 1; i < N; ++i) {
m[i][i+1] = D[i-1] * D[i] * D[i+1];
}
for (int d = 2; d < N; ++d) {
for (int i = 1; i <= N - d; ++i) {
m[i][i+d] = numeric_limits<T>::max();
for (int k = i; k < i + d; ++k) {
m[i][i+d] = min(m[i][i+d], m[i][k] + m[k+1][i+d] + D[i-1] * D[k] * D[i+d]);
}
}
}
printf("%lld", m[1][N]);
fclose(stdin);
fclose(stdout);
return 0;
}