Cod sursa(job #525761)

Utilizator icepowdahTudor Didilescu icepowdah Data 26 ianuarie 2011 03:30:43
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>
#include <climits>
using namespace std;

#define NMAX 500
#define INF  100000000000000000LL

int main(void)
{
	int n, i, j, k, l, q;
	int d[NMAX+1];
	long long M[NMAX+1][NMAX+1];

	freopen("podm.in","r",stdin);
	scanf("%d",&n);

	for (i=0;i<=n;++i)
	{
		scanf("%d",&d[i]);
		M[i][i] = 0;
	}	

	for (l=2;l<=n;++l)
	{
		for (i=1;i<=n-l+1;++i)
		{
			j = i+l-1;
			M[i][j] = INF;
			for (k=i;k<j;++k)
			{
				q = M[i][k]+M[k+1][j]+d[i-1]*d[k]*d[j];
				if (q < M[i][j])
				{
					M[i][j] = q;
				}
			}
		}
	}

	freopen("podm.out","w",stdout);
	printf("%lld\n",M[1][n]);
	return 0;
}