Cod sursa(job #467266)

Utilizator S7012MYPetru Trimbitas S7012MY Data 28 iunie 2010 13:41:07
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>
#include <iostream>
using namespace std;
#define DN 501
#define PREAMULT 999999999999999LL
long long n,dim[DN],sol[DN][DN];

int main()
{
	int i,j,k;
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	scanf("%lld",&n);
	for(i=0; i<=n; i++) scanf("%lld",&dim[i]);
	for (i=1; i<=n; i++) sol[i][i]=0;
	for(i=1; i<n; i++) sol[i][i+1]=dim[i-1]*dim[i]*dim[i+1];
	for(i=2; i<n; i++)
		for(j=1; j<=n-i; j++) {
			k=i+j;
			sol[j][k]=PREAMULT;
			for(int l=j;l<k; l++) sol[j][k]=min(sol[j][k],
												sol[j][l]+sol[l+1][k]+dim[j-1]*dim[l]*dim[k]);
		}
	printf("%lld",sol[1][n]);
	return 0;
}