Cod sursa(job #814847)

Utilizator MtkMarianHagrSnaf MtkMarian Data 16 noiembrie 2012 11:15:43
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>

#define NMAX 505
#define INF 1000000000000LL
long long  d[NMAX],n,m[NMAX][NMAX];

 inline long long  minim (long long a ,long long b)
{
	return a<b ? a : b ;
}

 void citire()
 {
	 	scanf("%d",&n);
	
		for(int i=0 ;i <=n ; ++i)
		{
			scanf("%d",&d[i]);
		}
	
 }

 void solve()
 {
	 for(int i=1 ;i<=n;++i)	
		m[ i ][ i ] = 0;	
	
	
	for(int i=1 ;i<n;++i)	
		m[i][i+1]=d[i-1]*d[i]*d[i+1];

	

	

	
	for(int j = 2 ; j < n ; ++j)
		
		for(int i= 1 ; i <= n-j  ; ++i)
		{
			long long  x=i+j;
			m[i][x]= INF ;			
			
			for(int k = i ; k < x; ++k )	
				m[i][x]= minim (m[i][x] , m[i][k] + m[k+1][x] + d[i-1]*d[k]*d[x]);
	
		}
 }
 int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);

	citire();

	solve();

	printf("%lld",m[1][n]);
	return 0;
	
}