Cod sursa(job #447508)

Utilizator DuxarFII-Stefan-Negrus Duxar Data 28 aprilie 2010 22:06:52
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<cstdio>

using namespace std;

struct matrix
{
	int lin,col;
} M[512];

long long n;
long long a[512][512];

void read();
void podm();
void write();
void initializare();

int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	read();
	podm();
	write();
	return 0;
}

void read()
{
	long long i,x,y;
	scanf("%lld",&n);
	scanf("%lld",&x);
	for (i=1;i<=n;++i)
	{
		scanf("%lld",&y);
		M[i].lin=x;
		M[i].col=y;
		if (i>1)
			a[i-1][i]=M[i-1].lin*M[i-1].col*M[i].col;
		x=y;
	}
}

void podm()
{
	long long i,j,k,d,min,s;
	for (d=3;d<=n;++d)
		for (i=1,j=d;j<=n;++i,++j)
		{
			//min=-1;
			for (k=i;k<j;++k)
			//{
				if((s=a[i][k]+a[k+1][j]+M[i].lin*M[k+1].lin*M[j].col)<a[i][j]||!a[i][j]) a[i][j]=s;
				//if (min==-1) min=s;
				//if (s<min) min=s;
			//}
		//a[i][j]=min;
		}
}

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