Pagini recente » Cod sursa (job #2364931) | Cod sursa (job #2329030) | Cod sursa (job #1569998) | Cod sursa (job #1780285) | Cod sursa (job #2011950)
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
#define nmax 500
using namespace std;
FILE *fin,*fout;
int n;
long long m[nmax+5][nmax+5],d[nmax+5];
long long minv(long long x, long long y)
{
return (x<y)?(x):(y);
}
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]=minv(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;
}