Pagini recente » Cod sursa (job #2241379) | Cod sursa (job #2733568) | Cod sursa (job #1237267) | Cod sursa (job #1723768) | Cod sursa (job #2838868)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("podm.in");
ofstream fout ("podm.out");
const long long INF = 1e17;
const int maxN = 505;
long long dp[maxN][maxN];
long long d[maxN];
int main() {
int n; fin >> n;
for(int i = 0; i <= n; ++i)
fin >> d[i];
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
dp[i][j] = INF;
for(int i = 1; i <= n; ++i)
dp[i][i] = 0;
for(int i = 1; i < n; ++i)
dp[i][i+1] = d[i-1] * d[i] * d[i+1];
for(int i = 1; i <= n-2; ++i)
for(int j = i+2; j <= n; ++j)
for(int k = i; k < j; ++k)
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j]
+ d[i-1] * d[k] * d[j]);
fout << dp[1][n];
return 0;
}