Pagini recente » Cod sursa (job #2418524) | Cod sursa (job #2572887) | Cod sursa (job #1940632) | Cod sursa (job #2448136) | Cod sursa (job #651284)
Cod sursa(job #651284)
#include<stdio.h>
long long min(int a,int b)
{
if(a<b)
return a;
return b;
}
int main()
{
FILE *fin,*fout;
fin=fopen("podm.in","r");
fout=fopen("podm.out","w");
int N,dim[506],i,d,k;
long long M[505][505],MAX=100000000000000000LL;
fscanf(fin,"%d",&N);
for(i=0;i<=N;i++)
fscanf(fin,"%d",&dim[i]);
for(i=1;i<=N;i++)
{
M[i][i]=0;
if(i<N)
M[i][i+1]=(long long)dim[i-1]*dim[i]*dim[i+1];
}
for(d=1;d<N;d++)
{
for(i=1;i<=N-d;i++)
{
M[i][i+d]=MAX;
for(k=i;k<i+d;k++)
M[i][i+d]=min(M[i][i+d],M[i][k]+M[k+1][i+d]+(long long)dim[i-1]*dim[k]*dim[i+d]);
}
}
fprintf(fout,"%lld",M[1][N]);
fclose(fin);
fclose(fout);
return 0;
}