Pagini recente » Cod sursa (job #1257882) | Cod sursa (job #474014) | Cod sursa (job #2670140) | Cod sursa (job #299074) | Cod sursa (job #2148345)
#include <bits/stdc++.h>
#define nmax 507
using namespace std;
ifstream fin ("podm.in");
ofstream fout ("podm.out");
int n;
int d[nmax];
long long dp[nmax][nmax];
void Citire()
{
int i;
fin >> n;
for (i = 0; i <= n; i++)
fin >> d[i];
}
void DP()
{
int i, j, k, dif;
long long minim;
/// initializari
for (i = 1; i <= n; i++)
dp[i][i+1] = d[i-1] * d[i] * d[i+1];
for (dif = 2; dif < n; dif++)
for (i = 1; i <= n-dif; i++)
{
j = i + dif;
minim = 1LL << 62;
for (k = i; k < j; k++)
minim = min(minim, dp[i][k] + dp[k+1][j] + 1LL * d[i-1] * d[k] * d[j]);
dp[i][j] = minim;
}
fout << dp[1][n] << "\n";
}
int main()
{
Citire();
DP();
fin.close();
fout.close();
return 0;
}