Cod sursa(job #535915)

Utilizator SheepBOYFelix Liviu SheepBOY Data 17 februarie 2011 22:01:58
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
const int MAXDIM=510;
const long long INF=20000000000LL;
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 ] = 1 ;
	
	for( d = 1 ; 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 ];
			dinique[i][i+d]=min;
		}
		
	printf("%lld",dinique[1][n]);
	return 0;
}