Cod sursa(job #432882)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 2 aprilie 2010 21:25:47
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
#define Nmax 505
#define LL long long
#define INF 1000000000000000000LL // 10^18

LL d[Nmax];
LL a[Nmax][Nmax];
int i,j,k,n,lg;

inline LL Minim(LL x, LL y){
	return x<y ? x:y;
}

int main(){
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	scanf("%d",&n);
	for(i=0;i<=n;++i) scanf("%d",&d[i]);
	
	for(i=1;i<=n;++i)
		a[i][i+1]=d[i-1]*d[i]*d[i+1];
	
	for(lg=2; lg<=n; ++lg)
		for(i=1; i+lg-1<=n; ++i){
			j=i+lg-1;
			a[i][j]=INF;
			
			for(k=i;k<j;++k)
				a[i][j]=Minim(a[i][j],a[i][k]+a[k+1][j]+ d[i-1]*d[k]*d[j]);
		}
	
	printf("%lld\n",a[1][n]);
	fclose(stdin); fclose(stdout);
	return 0;
}