Pagini recente » Cod sursa (job #1666261) | Profilu' lu' Razvan | Cod sursa (job #2732044) | Cod sursa (job #1751214) | Cod sursa (job #1980971)
#include <iostream>
#include <fstream>
using namespace std;
const int nMax = 505;
const long long INF = (1LL << 62);
int n;
long long d[nMax];
long long dp[nMax][nMax];
void citire()
{
ifstream in("podm.in");
in >> n;
for(int i = 0; i <= n; ++i)
in >> d[i];
in.close();
}
void rezolvare()
{
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;
int st, dr;
long long cost;
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= n; ++j)
{
st = j;
dr = j + i - 1;
if(dr > n)
break;
for(int k = st; k < dr; ++k)
{
cost = dp[st][k] + dp[k+1][dr] + d[st-1] * d[k] * d[dr];
dp[st][dr] = min(dp[st][dr], cost);
}
}
}
ofstream out("podm.out");
out << dp[1][n];
out.close();
}
int main()
{
citire();
rezolvare();
return 0;
}