Cod sursa(job #380937)

Utilizator NemultumituMatei Ionita Nemultumitu Data 8 ianuarie 2010 08:59:32
Problema Parantezare optima de matrici Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <cstdio>
int n,a[600];
long long int an[600][600];

void calc();

int main()
{
	freopen ("podm.in","r",stdin);
	freopen ("podm.out","w",stdout);
	scanf("%d",&n);
	for (int i=0;i<=n;++i)
		scanf("%d",&a[i]);
	calc();
	printf("%lld",an[1][n]);
	return 0;
}

void calc()
{
	for (int d=1;d<=n;++d)
		for (int i=1;i<=n-d;++i)
		{
			int j=d+i;
			an[i][j]=(long long) 1<<62;
			for (int k=1;k<j;++k)
			{
				long long int x=an[i][k]+an[k+1][j]+a[i-1]*a[k]*a[j];
				if (x<an[i][j])
					an[i][j]=x;
			}
		}
}