Pagini recente » Cod sursa (job #2322910) | Cod sursa (job #2708593) | Cod sursa (job #562063) | Cod sursa (job #2256260) | Cod sursa (job #2259850)
#include <iostream>
using namespace std;
FILE *in = fopen("podm.in","r");
FILE *out = fopen("podm.out", "w");
int N;
long long v[505];
long long C[505][505];
//int D[505][505];
int main()
{
fscanf(in, "%d", &N);
for(int i=0; i<=N; ++i)
{
fscanf(in, "%d", &v[i]);
}
for(int i=1; i<=N; ++i)
C[i][i] = 0;
for(int i=1; i<=N-1; ++i)
{
C[i][i+1] = v[i-1]*v[i]*v[i+1];
//D[i][i+1] = i;
}
for(int j=3; j<=N; ++j)
for(int i=1; i<=N-j+1; ++i)
{
long long min_val;
//int min_k;
bool l = false;
for(int k=i; k<=j+i-2; ++k)
{
long long int x = C[i][k] + C[k+1][j+i-1] + v[i-1]*v[k]*v[j+i-1];
if(!l)
{
min_val = x;
//min_k = k;
l = true;
}
else if(l && x < min_val)
{
min_val = x;
//min_k = k;
}
}
C[i][j+i-1] = min_val;
//D[i][j+i-1] = min_k;
}
fprintf(out, "%lld", C[1][N]);
return 0;
}