Cod sursa(job #523326)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 17 ianuarie 2011 19:32:36
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
using namespace std;

const unsigned long long INF=(1LL<<60);

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

unsigned long long N,d[512],bst[512][512];
int i,j,k;

int main()
{
	f>>N;
	for( i = 0 ; i <= N; ++i ){
		f>>d[i];
	}
	f.close();

	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 + k <= N ; ++i ){
			
			bst[i][i+k]=INF;
			for (j = i; j < i + k ; ++j ){
				bst[i][i+k]=min( bst[i][i+k] , bst[i][j] + bst[j+1][i+k] + d[i-1]*d[i+k]*d[j]);
			}
		}
	}

	g<<bst[1][N];
	g.close();
	return 0;
}