Pagini recente » Cod sursa (job #1333007) | Cod sursa (job #3242947) | Cod sursa (job #914351) | Cod sursa (job #2726249) | Cod sursa (job #1665713)
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 500;
const unsigned long long INF = numeric_limits <unsigned long long> :: max();
unsigned long long D[MAX_N * (MAX_N + 1) >> 1];
int V[MAX_N + 1];
int X[MAX_N];
#define W(A, B) (X[(B)] + (A))
int main() {
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
int N;
scanf("%d", &N);
for (int i = 0; i <= N; ++ i) {
scanf("%d", V + i);
X[i] = (i * (i + 1)) >> 1;
}
fclose(stdin);
for (int j = 1; j < N; ++ j) {
for (int i = j - 1; i >= 0; -- i) {
D[W(i, j)] = INF;
for (int k = i + 1; k <= j; ++ k) {
D[W(i, j)] = min(D[W(i, j)], D[W(i, k - 1)] + D[W(k, j)] + 1ULL * V[i] * V[k] * V[j + 1]);
}
}
}
printf("%llu\n", D[W(0, N - 1)]);
fclose(stdout);
return 0;
}