Cod sursa(job #377980)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 27 decembrie 2009 10:01:55
Problema Parantezare optima de matrici Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#define ll long long
#define NMAX 1<<9
#define INF 666666666666666LL 
int n,d[NMAX];
ll best[NMAX][NMAX];
void read()
{
	scanf("%d",&n);
	int i;
	for (i=1; i<=n+1; i++)
		scanf("%d",&d[i]);
}
void solve()
{
	int i,j,k;
	ll nr;
	for (i=1; i<n; i++)
		for (j=1; j<=n-i; j++)
		{
			best[j][j+i]=INF;
			for (k=j; k<j+i; k++)
			{
				nr=best[j][k]+best[k+1][j+i]+(ll)d[j]*d[k+1]*d[j+i+1];
				if (best[j][j+i]>nr)
					best[j][j+i]=nr;
			}
		}
}
int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	read();
	solve();
	printf("%lld\n",best[1][n]);
	return 0;
}