Pagini recente » Cod sursa (job #1781265) | Cod sursa (job #971370) | Cod sursa (job #837159) | Cod sursa (job #1430398) | Cod sursa (job #2267734)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
int main()
{
int n;
in >> n;
vector<long long> v(n + 2);
vector<vector<long long> > dp(n + 1, vector<long long>(n + 1));
for (int i = 1; i <= n + 1; i++)
in >> v[i];
for (int j = 1; j <= n - 1; j++)
for (int i = 1; i <= n - j; i++)
{
dp[i][i + j] = dp[i][i + j - 1] + v[i] * v[i + j] * v[i + j + 1];
for (int k = i; k < i + j; k++)
dp[i][i + j] = min(dp[i][i + j], dp[i][k] + dp[k + 1][i + j] + v[i] * v[k + 1] * v[i + j + 1]);
}
out << dp[1][n];
return 0;
}