Cod sursa(job #380166)

Utilizator AndreyPAndrei Poenaru AndreyP Data 4 ianuarie 2010 22:49:28
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>
#define N 505
long long d[N];
int n;
long long a[N][N];
inline void citire()
{
	scanf("%d",&n);
	for(int i=0; i<=n; ++i)
		scanf("%lld",&d[i]);
}
inline void rezolva()
{
	int t;
	long long aux;
	for(int i=2; i<=n; ++i)
	{
		for(int j=1; i+j-1<=n; ++j)
		{
			t=i+j-1;
			a[j][t]=a[j+1][t]+d[j-1]*d[j]*d[t];
			for(int w=j+1; w<t; ++w)
			{
				aux=a[j][w]+a[w+1][t]+d[j-1]*d[w]*d[t];
				if(aux<a[j][t])
					a[j][t]=aux;
			}
		}
	}
}
int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);

	citire();
	rezolva();

	printf("%lld\n",a[1][n]);
	return 0;
}