Pagini recente » Cod sursa (job #1224475) | Cod sursa (job #1360439) | Cod sursa (job #2860339) | Cod sursa (job #2832971) | Cod sursa (job #780129)
Cod sursa(job #780129)
#include <stdio.h>
#define NMax 510
const char IN[]="podm.in",OUT[]="podm.out";
int N;
int A[NMax][NMax],B[NMax][NMax];
long long T[NMax][NMax];
int main()
{
int x,i,j,k;
freopen(IN,"r",stdin);
scanf("%d",&N);
for (i=0;i<=N;++i) scanf("%d",A[i]+i);
fclose(stdin);
for (i=1;i<=N;++i) B[i][i]=A[i][i];
for (i=N;i>0;--i) A[i][i]=A[i-1][i-1];
for (x=1;x<=N;++x)
for (i=1;i+x<=N;++i)
{
j=i+x;
T[i][j]=T[i][i]+T[i+1][j]+1LL*A[i][i]*B[i][i]*B[i+1][j];A[i][j]=A[i][i];B[i][j]=B[i+1][j];
for (k=i;k<j;++k) if ( T[i][j]>T[i][k]+T[k+1][j]+1LL*A[i][k]*B[i][k]*B[k+1][j])
T[i][j]=T[i][k]+T[k+1][j]+1LL*A[i][k]*B[i][k]*B[k+1][j],
A[i][j]=A[i][k],B[i][j]=B[k+1][j];
}
freopen(OUT,"w",stdout);
printf("%lld\n",T[1][N]);
fclose(stdout);
return 0;
}