Cod sursa(job #1074189)

Utilizator roby2001Sirius roby2001 Data 7 ianuarie 2014 12:44:19
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
/*
    Keep It Simple!
*/

#include <stdio.h>

#define inf 100000000000000000LL
#define min(a,b) a<b ? a:b

long long n,d[510],m[510][510];

int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	
	scanf("%lld",&n);
	
	for(int i=0; i<=n; i++)
	{
		scanf("%lld",&d[i]);
	}
	
	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; i++)
		{
			m[i][i+j] = inf;
			for(int k=i; k<i+j; k++)
				m[i][i+j] = min ( m[i][i+j], m[i][k] + m[k+1][i+j] + d[i-1]*d[k]*d[i+j]); 
		}
		
	printf("%lld",m[1][n]);
}