Cod sursa(job #812990)

Utilizator CataBBaincescu Catalina CataB Data 14 noiembrie 2012 20:00:16
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>

using namespace std;

ifstream fin ("podm.in");
ofstream fout ("podm.out");

void citire();
void pd();
void afisare();

long long int n, d[501];
long long int cmin[501][501];

int main ()
{
	citire();
	pd();
	afisare();
	return 0;
}

void citire()
{
	int i;
	fin>>n;
	for(i=0;i<=n;i++)
		fin>>d[i];
}

void pd ()
{
	int i, j, k, x;
	for(i=1;i<n;i++)
		cmin[i][i+1]=d[i-1]*d[i]*d[i+1];
	for(x=3;x<=n;x++)
		for(i=1;i<=n-x+1;i++)
		{
			j=i+x-1;
			cmin[i][j]=1000000000;
			for(k=i;k<=j-1;k++)
				if(cmin[i][j]>cmin[i][k]+cmin[k+1][j]+d[i-1]*d[k]*d[j])
				{
					cmin[i][j]=cmin[i][k]+cmin[k+1][j]+d[i-1]*d[k]*d[j];
					cmin[j][i]=k;
				}
		}
}

void afisare()
{
	fout<<cmin[1][n]<<'\n';
}