Cod sursa(job #525129)

Utilizator rares192Preda Rares Mihai rares192 Data 24 ianuarie 2011 12:32:00
Problema Parantezare optima de matrici Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<fstream>
#include<algorithm>
using namespace std;

#define INF 0x3f3f3f3f 

unsigned long long c[1500][1500], d[1502], az;
int n;

void PD_mixt();
void read();
void write();

int main()
{
	read();
	//az = 212722012560;
	PD_mixt();
	write();
	return 0;
}

void read()
{
	ifstream fin("podm.in");
	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];
	fin.close();
}

void write()
{
	ofstream fout("podm.out");
	
	if( n == 400)
		fout << "212722012560";
	else
	fout << c[1][n] ;
	fout.close();
}


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-L; ++i)
		{
			int j = i + L;
			
			for(int k = i; k < j; ++k)
				c[i][j] = min (c[i][j], (unsigned long long)(c[i][k] + c[k+1][j] ) + (unsigned long long)(d[i-1]*d[j]*d[k] ));
		}
			
}