Pagini recente » Cod sursa (job #2026474) | Cod sursa (job #297150) | Cod sursa (job #1623042) | Cod sursa (job #844140) | Cod sursa (job #1917670)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define DIM 505
unsigned long long d[DIM][DIM];
struct elem {
int first, second;
} V[DIM];
int N, a, b;
int main() {
unsigned long long INF = 1000000000000000;
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d\n", &N);
scanf("%d", &a);
int b;
for(int i = 1; i <= N; ++i) {
scanf("%d", &b);
V[i].first = a;
V[i].second = b;
a = b;
}
for(int i = 1; i <= N; ++i) {
d[i][i] = 0;
}
for(int i = 1; i < N; ++i ){
d[i][i + 1] = 1LL * V[i].first * 1ULL * V[i].second * 1ULL * V[i + 1].second;
}
for(int lg = 2; lg < N; ++lg) {
for(int i = 1; i <= N - lg; ++i) {
int j = i + lg;
d[i][j] = INF;
for(int k = i; k < j; ++k) {
d[i][j] = min(d[i][j], d[i][k] + d[k + 1][j] + 1ULL * V[i].first * 1ULL * V[k + 1].first * 1ULL * V[j].second);
}
}
}
cout << d[1][N] << '\n';
return 0;
}