Cod sursa(job #525124)

Utilizator david_raucaRauca Ioan David david_rauca Data 24 ianuarie 2011 11:57:18
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
using namespace std;

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

#define INF 0x3f3f3f3f
#define DIM 1002
//#define DIM1 10001

int n;
long long c[DIM][DIM];
long long d[DIM];

void Read();
void PD_mixt();
void Write();

int main()
{
	Read();
	PD_mixt();
	Write();
	
	fin.close();
	fout.close();
	
	return 0;
}

void Read()
{
	fin >> n;
	for( int i = 1; i <= n; ++i )
		for( int j = i; j <= n; ++j )
			c[i][j] = INF;
			
	for( int i = 0; i <= n; ++i )
		fin >> d[i];
}

void PD_mixt()
{
	for( int i = 1; i <= n; ++i )
		c[i][i] = 0;

	for( int L = 1; L <= n; ++L )
		for( int i = 1; i <= n; ++i )
		{
			int j = i + L;
			
			for( int k = i; k < j; ++k )
				c[i][j] = min( c[i][j], c[i][k] + c[k+1][j] + d[i-1] * d[j] * d[k] );
		}
}

void Write()
{
	fout << c[1][n] << '\n';
}