Cod sursa(job #430293)

Utilizator GotenAmza Catalin Goten Data 30 martie 2010 21:29:09
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<fstream>
#define oo (1ll<<60)
#define nmax 510
using namespace std;
long long dp[nmax][nmax];
int dim[nmax];
int main()
{
	int n,i,j,d;
	ifstream f("podm.in");
	ofstream g("podm.out");
	f>>n;
	for(i=0;i<=n;i++)
		f>>dim[i];
	for(i=1;i<=n;i++)
		dp[i][i+1]=1ll*dim[i-1]*dim[i]*dim[i+1];
	for(d=2;d<n;d++)
		for(i=1;i<=n-d;i++)
		{
			dp[i][i+d]=oo;
			for(j=i;j<=i+d;j++)
				if(dp[i][i+d]>dp[i][j]+dp[j+1][i+d]+1ll*dim[i-1]*dim[j]*dim[i+d])
					dp[i][i+d]=dp[i][j]+dp[j+1][i+d]+1ll*dim[i-1]*dim[j]*dim[i+d];
		}
	g<<dp[1][n];
	return 0;
}