Pagini recente » Cod sursa (job #1616879) | Cod sursa (job #2702949) | Cod sursa (job #2073400) | Cod sursa (job #636840) | Cod sursa (job #3272456)
#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define pb push_back
#define sz(x) (int)(x.size())
#define all(a) a.begin(), a.end()
#define nl '\n'
const int N = 550, mod = 100003, INF = 1e9;
int n, d[N], dp[N][N];
pair<int, int> w[N];
signed main() {
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n + 1; i++) {
cin >> d[i];
}
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) {
dp[i][j] = INF;
}
}
int m = 0;
for (int i = 2; i <= n + 1; i++) {
m++;
w[m] = {d[i - 1], d[i]};
}
for (int len = 2; len <= n; len++) {
for (int i = 1; i <= n - len + 1; i++) {
int j = i + len - 1;
for (int k = i; k < j; k++) {
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + w[i].first * w[k].second * w[j].second);
}
}
}
cout << dp[1][n];
}