Pagini recente » Cod sursa (job #2227086) | suma | Cod sursa (job #1057079) | Cod sursa (job #1774546) | Cod sursa (job #2011936)
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#define nmax 500
using namespace std;
FILE *fin,*fout;
int n,d[nmax+2];
long long m[nmax+2][nmax+2];
int main()
{
int k;
fin=fopen("podm.in","r");
fout=fopen("podm.out","w");
fscanf(fin,"%d",&n);
for(int i=0;i<=n;i++)
fscanf(fin,"%d",&d[i]);
for(int i=1;i<=n;i++)
m[i][i]=0;
for(int i=1;i<=n-1;i++)
m[i][i+1]=d[i-1]*d[i]*d[i+1];
for(int i=2;i<=n-1;i++)
for(int j=1;j<=n-i;j++)
{
k=i+j;
m[j][k]=LONG_MAX;
for(int l=j;l<=k-1;l++)
m[j][k]=min(m[j][k],m[j][l]+m[l+1][k]+d[j-1]*d[l]*d[k]);
}
fprintf(fout,"%lld",m[1][n]);
fclose(fin);
fclose(fout);
return 0;
}