Pagini recente » Cod sursa (job #1775785) | Cod sursa (job #259093) | Cod sursa (job #1514203) | Cod sursa (job #2223110) | Cod sursa (job #3150570)
#include <fstream>
#include <vector>
constexpr long long get_inf() {
const int NMAX = 500;
const int DIM = 10000;
return 1ll * NMAX * DIM * DIM * DIM;
}
int main() {
std::ifstream cin("podm.in");
std::ofstream cout("podm.out");
constexpr long long inf = get_inf();
int n;
cin >> n;
std::vector<int> v(n + 1, 0);
for (int i = 0; i <= n; i++)
cin >> v[i];
std::vector<std::vector<long long>> dp(n, std::vector<long long>(n, 0));
for (int dif = 1; dif < n; dif++) {
for (int left = 0; left + dif < n; left++) {
int right = left + dif;
dp[left][right] = inf;
for (int k = left; k < right; k++) {
dp[left][right] = std::min(dp[left][right],
dp[left][k] + dp[k + 1][right] +
1ll * v[left] * v[k + 1] * v[right + 1]);
}
}
}
cout << dp[0][n - 1] << '\n';
return 0;
}