Pagini recente » Cod sursa (job #2186233) | Cod sursa (job #11487) | Cod sursa (job #756749) | Cod sursa (job #1456890) | Cod sursa (job #2011945)
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#define nmax 500
using namespace std;
FILE *fin,*fout;
int n;
long long m[nmax+5][nmax+5],d[nmax+5];
int main()
{
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)
{
int 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;
}