Cod sursa(job #761618)

Utilizator Marius96Marius Gavrilescu Marius96 Data 26 iunie 2012 20:21:39
Problema Parantezare optima de matrici Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<cstdio>
#include<algorithm>
long long m[505][505];
int d[505];

long long calc (int x,int y)
{
	if(m[x][y])
		return m[x][y];
	if(x==y)
		return 0;
	if(x+1==y)
		return ((long long)d[x-1])*d[x]*d[x+1];
	long long r=1000000000000000000;
	for(int k=x;k<y;k++)
		r=std::min (r,calc (x,k)+calc (k+1,y)+((long long)d[x-1])*d[k]*d[y]);
	m[x][y]=r;
	return r;
}

int main()
{
	freopen ("podm.in","r",stdin);
	freopen ("podm.out","w",stdout);
	int n;
	scanf ("%d",&n);
	for(int i=0;i<=n;i++)
		scanf ("%d",d+i);

	printf ("%lld",calc (1,n));
	return 0;
}