Pagini recente » Cod sursa (job #378731) | Cod sursa (job #431939) | Cod sursa (job #381990) | Cod sursa (job #225147) | Cod sursa (job #1061695)
#include <iostream>
#include <cstdio>
using namespace std;
int D[501];
int m[501][501], n;
void citire()
{
cin >> n;
for(int i = 0; i <= n; i++)
cin >> D[i];
}
void calcul()
{
int i = 1, l = 1;
for(l = 1; l < n; l++)
{
for(i = 1; i + l <= n; i++)
{
int minim = m[i][i] + m[i+1][i+l] + D[i-1]*D[i]*D[i+l];
for(int k = i+1; k < i+l; k++)
minim = min(minim, m[i][k] + m[k+1][i+l] + D[i-1] * D[k] * D[i+l]);
m[i][i+l] = minim;
}
}
}
int main()
{
freopen("podm.in", "r", stdin);
freopen("podm.out", "W", stdout);
citire();
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
m[i][j] = n*(i-1) + j;
// for(int i = 1; i <= n; i++)
// {
// for(int j = 1; j <= n; j++)
// cout << m[i][j] << ' ';
// cout << '\n';
// }
calcul();
cout << m[1][n];
return 0;
}