Cod sursa(job #535968)

Utilizator mariusandreiMarius Lucian Andrei mariusandrei Data 17 februarie 2011 22:45:13
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<cstdio>
#include<fstream>
#define INF 200000000000000000LL
using namespace std;
int n,k;
long long mat[5001][5001];
long v[5001];
long long fct(long long a,long long b)
{
	if(a<b)
		return a;
	return b;
}
void citire()
{
	//freopen("podm.in","r",stdin);
	ifstream in("podm.in");
	freopen("podm.out","w",stdout);
	in>>n;
	for(int i=0;i<=n;i++)
		in>>v[i];
	
}
void construction()
{
	for (int i=1;i<n;i++)
		mat[i][i+1]=v[i-1]*v[i]*v[i+1];
	for(int i=2;i<=n-1;i++)
		for(int j=1;j<=n-i;j++)
		{
			k=i+j;
			mat[j][k]=INF;
			for(int l=j;l<=k-1;l++)
				mat[j][k] = fct(mat[j][k],mat[j][l] + mat[l+1][k] + v[j-1]*v[l]*v[k]);			
		}	
}


int main()
{
	citire();
	construction();
	printf("%lld",mat[1][n]);
	return 0;
}