Pagini recente » Cod sursa (job #2689774) | Cod sursa (job #310391) | Cod sursa (job #909162) | Cod sursa (job #2662907) | Cod sursa (job #2505168)
#include <bits/stdc++.h>
using namespace std;
const int INF = numeric_limits<int>::max();
using ll = long long;
int main()
{
ifstream f("podm.in");
ofstream g("podm.out");
int n;
f >> n;
vector<int> v(n + 1);
vector<vector<ll>> dp(n + 1, vector<ll>(n + 1, INF));
for (int i = 0; i < n + 1; i++) {
f >> v[i];
}
for (int i = 1; i <= n; i++) {
dp[i][i] = 0;
}
for (int i = 1; i <= n - 1; i++) {
dp[i][i + 1] = v[i - 1] * v[i] * v[i + 1];
}
for (int i = 2; i <= n - 1; i++) {
for (int j = 1; j <= n - i; j++) {
for (int k = j; k < i + j; k++) {
dp[j][i + j] = min(dp[j][i + j], dp[j][k] + dp[k + 1][i + j] + v[j - 1] * v[k] * v[i + j]);
}
}
}
g << dp[1][n];
return 0;
}