Pagini recente » Cod sursa (job #280851) | Cod sursa (job #1283125) | Cod sursa (job #2544620) | Cod sursa (job #935826) | Cod sursa (job #2578772)
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
const int NMAX = 500;
const long long INF = 1e16;
int N;
pair <int, int> v[NMAX + 5];
long long dp[NMAX + 5][NMAX + 5];
int main()
{
fin >> N;
fin >> v[1].first;
for(int i = 1; i <= N; i++)
{
int x;
fin >> x;
v[i].second = x;
v[i + 1].first = x;
}
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
{
dp[i][j] = INF;
if(i == j)
dp[i][j] = 0;
}
for(int l = 2; l <= N; l++)
for(int s = 1; s <= N - l + 1; s++)
for(int p = s; p <= s + l - 2; p++)
dp[s][s + l - 1] = min(dp[s][s + l - 1],
dp[s][p] + dp[p + 1][s + l - 1] +
1LL * v[s].first * v[p].second * v[s + l - 1].second);
fout << dp[1][N] << '\n';
return 0;
}