Pagini recente » Cod sursa (job #1698282) | Cod sursa (job #535931)
Cod sursa(job #535931)
#include<stdio.h>
const int MAXDIM=510;
const long long INF=200000000000000000LL;
int n,dv[MAXDIM];
long long dinique[MAXDIM][MAXDIM];
int main()
{
long long min;
int i,j,d;
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&n);
for( i = 0 ; i <= n ; ++i )
{
scanf("%d",dv+i);
dinique[i][i]=0;
}
for( i = 1 ; i < n ; ++ i)
dinique[ i ][ i + 1 ] = dv[i-1]*dv[i]*dv[i+1] ;
for( d = 2 ; d < n ; ++ d )
for( i = 1 ; i <= n-d ; ++ i )
{
min=INF;
for( j = i ; j < i + d; ++ j )
if( min > dinique [ i ] [ j ] + dinique [ j + 1 ] [ i + d ] + dv[ i-1 ] * dv[ j ] * dv[ i + d ] )
min= dinique [ i ] [ j ] + dinique [ j + 1 ] [ i + d ] + dv[ i-1 ] * dv[ j ] * dv[ i + d ];
if(dinique[i][i+d] > min || !dinique[i][i+d])
dinique[i][i+d]=min;
}
printf("%lld",dinique[1][n]);
return 0;
}