Cod sursa(job #524026)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 19 ianuarie 2011 22:54:24
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
using namespace std;
#define INF   100000000000000000LL

ifstream f("podm.in");
ofstream g("podm.out");

long long d[502];
long long bst[502][502],aux;
int i,j,k,N,x;

int main () {
	f>>N;
	for ( i = 0 ; i <= N ; ++i ){
		f>>d[i];
	}
	for ( i = 1 ; i < N ; ++i ){
		bst[i][i+1]  = d[i-1] * d[i] * d[i+1];
	}
	
	for ( k = 2 ; k < N ; ++k ){
		for ( i = 1 ; i <= N - k ; ++i ){
			x = i + k;
			bst[i][x] = INF;
			for ( j = i  ; j < x ; ++j ){
				aux = bst[i][j] + bst[j+1][x] + d[i-1] * d[x] * d[j] ;
				bst[i][x] = bst[i][x] < aux ? bst[i][x] : aux ;
			}
			
		}
		
	}
	
	g<<bst[1][N];
	
	return 0;
}