Pagini recente » Cod sursa (job #3361274) | Cod sursa (job #3361957)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("podm.in");
ofstream out ("podm.out");
int n;
long long dp[505][505];
int v[505];
const long long INF = 1e18 + 1;
// dp[i][j] = nr minim de inmultiri pt a rezolva matricile de la i la j
int main()
{
in >> n;
for (int i = 0; i <= n; i++)
{
in >> v[i];
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (i == j) dp[i][j] = 0;
else dp[i][j] = INF;
}
}
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++)
{
long long c = dp[i][k] + dp[k + 1][j] + 1LL * v[i - 1] * v[k] * v[j];
if (c < dp[i][j]) dp[i][j] = c;
}
}
}
out << dp[1][n];
return 0;
}