Cod sursa(job #551450)

Utilizator balakraz94abcd efgh balakraz94 Data 10 martie 2011 19:51:37
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<cstdio>
#include<string>
#define infile "podm.in"
#define outfile "podm.out"
#define L 502
#define INF (1LL << 60)
using namespace std;

void citeste();
void rezolva();
void afiseaza();


long long m[L][L];
int p[L];
int n;


void citeste()
{
	freopen(infile,"r",stdin);
	
	scanf("%d",&n);
	
	for(int i=0;i<=n;i++)
		scanf("%d",&p[i]);
	
	fclose(stdin);
}


void rezolva()
{
	memset(m,0,sizeof(m));
	
	for(int l=2;l<=n;l++)
		for(int i=1;i<=n-l+1;i++)
		{
			int j=i+l-1;
			m[i][j]=INF;
			for(int k=i;k<=j-1;k++)
			{
				long long q;
				q = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
				if(q<m[i][j]) m[i][j]=q;
			}
			
		}
}




void afiseaza()
{
	freopen(outfile,"w",stdout);
	
	printf("%lld",m[1][n]);
	
	fclose(stdout);
	
}


int main()
{
	citeste();
	rezolva();
	afiseaza();
	
	return 0;
}