Cod sursa(job #383684)

Utilizator undogSavu Victor Gabriel undog Data 17 ianuarie 2010 17:51:29
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <cstdio>

const long long INF = (long long)1<<60;

int main() {
	
	freopen("podm.in","rt",stdin);
	freopen("podm.out","wt",stdout);
	
	long long nr[501][501];

	long long a[502];
	
	int n,i,j,k,d;
	
	scanf("%d",&n);
	
	for(i=1;i<=n+1;i++)
		scanf("%lld",&a[i]);
		
	for (i=1;i<=n;i++)
		nr[i][i] = 0;
		
	long long value;
	
	for(d=1;d<=n-1;d++){
		for (i=1;(j=i+d)<=n;i++){
			nr[i][j]=INF;
			for(k=i;k<=j-1;k++){
				value=nr[i][k]+nr[k+1][j]+a[i]*a[k+1]*a[j+1];
				if(value<nr[i][j])nr[i][j]=value;
			}
		}
	}


	printf("%lld",nr[1][n]);

	return 0;
}