Cod sursa(job #549277)

Utilizator irene_mFMI Irina Iancu irene_m Data 8 martie 2011 12:44:50
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#define MaxN 505
#define infile "podm.in"
#define outfile "podm.out"
#define inf 2000005

int d[MaxN],N;
long long c[MaxN][MaxN];

void read()
{
	int i;
	scanf("%d",&N);
	for(i=0;i<=N;i++)
		scanf("%d",&d[i]);
}

void sol()
{
	int i,l,j,k;
	long long min;
	for(i=1;i<N;i++)
		c[i][i+1]=d[i-1]*d[i]*d[i+1];
	
	for(l=2;l<N;l++)
		for(i=1;i<=N;i++)
		{
			j=i+l;
			min=inf;
			for(k=i;k<j;k++)
				if(c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j]<min)
					min=c[i][k]+c[k+1][j]+d[i-1]*d[k]*d[j];
			c[i][j]=min;
		}
}

void write()
{
	printf("%lld\n",c[1][N]);
}

int main()
{
	freopen(infile,"r",stdin);
	freopen(outfile,"w",stdout);
	
	read();
	sol();
	write();
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}