Cod sursa(job #543964)

Utilizator c_adryanChitescu Adrian c_adryan Data 28 februarie 2011 20:30:01
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>

using namespace std;

#define MAX 505
#define INF 100000000000000LL
long long d[MAX];int  n;
long long m[MAX][MAX];

int main(){
	ifstream in("podm.in");
	ofstream out("podm.out");
	
	in>>n;
	for( int i = 0 ; i <= n ; i++)
			in>>d[i];
	for( int i =1 ; i < n ; i++)
			m[i][i+1] = d[i-1] * d[i] * d[i+1];

	for( int l = 2 ; l <= n - 1 ; l ++ ) 
		for( int i = 1 ; i <= n-l ; i++){
				int j = i+l;
				//m[i][j] =  m[i+1][j] + d[i-1]*d[i]*d[j];
				m[i][j] = INF;
				for( int k = i; k <= j-1 ; k++) {
					m[i][j] = min(m[i][j],m[i][k] + m[k+1][j] + d[i-1]*d[k]*d[j]);
	
				}
			}
	out << m[1][n];

	out.close();
	return 0 ;

	
	
	

}