Pagini recente » Cod sursa (job #2393246) | Cod sursa (job #931269) | Cod sursa (job #182133) | Cod sursa (job #1364044) | Cod sursa (job #1599178)
#include<stdio.h>
using namespace std;
const int N = 505;
const long long INF = 1000000000000000;
long long mat[N][N], v[N];
long long minim (long long a, long long b)
{
if (a < b)
return a;
return b;
}
int main ()
{
FILE *in, *out;
in = fopen ("podm.in", "r");
out = fopen ("podm.out", "w");
int n;
fscanf (in, "%d", &n);
int i;
for (i = 0; i <= n; i++)
fscanf (in, "%lld", &v[i]);
int j;
for (i = 1; i <= n - 1; i++)
mat[i][i + 1] = v[i - 1] * v[i] * v[i + 1];
int c, k;
for (c = 2; c <= n - 1; c++)
for (i = 1; i <= n - c; i++)
{
j = c + i;
mat[i][j] = INF;
for (k = i; k <= j - 1; k++)
mat[i][j] = minim (mat[i][j], mat[i][k] + mat[k + 1][j] + v[i - 1] * v[k] * v[j]);
}
fprintf (out, "%lld", mat[1][n]);
return 0;
}