Pagini recente » Cod sursa (job #899095) | Cod sursa (job #2002699) | Cod sursa (job #9612) | Cod sursa (job #1149466) | Cod sursa (job #758709)
Cod sursa(job #758709)
#include <cstdio>
#define NMAX 501
#define INF 100000000000000000LL
using namespace std;
int m[NMAX], n;
long long cost[NMAX][NMAX];
int min(int a , int b)
{
return a < b ? a : b;
}
int main()
{
int i, d, k, j;
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
scanf("%d", &n);
for ( i = 0; i <= n; i++)
scanf("%d", &m[i]);
for ( d = 1; d < n; d++)
cost[d][d+1] = m[d-1] * m[d] * m[d+1];
for ( d = 2; d < n; d++) // pe a cata diagonala sunt -1
for ( i = 1; i <= n - d; i++)
{
j = d + i;
cost[i][j] = INF;
for ( k = i; k < j; k++)
cost[i][j] = min(cost[i][j], cost[i][k] + cost[k+1][j] + m[i-1] * m[k] * m[j]);
}
printf("%d\n", cost[1][n] );
fclose(stdin);
fclose(stdout);
return 0;
}