Cod sursa(job #522708)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 15 ianuarie 2011 22:10:44
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<stdio.h>

FILE*f=fopen("podm.in","r");
FILE*g=fopen("podm.out","w");

int i,N,j,d[1<<9],k;
long long bst[1<<9][1<<9],aux;
long long Inf = 1LL << 62;

int main () {
	fscanf(f,"%d",&N);
	for ( i = 1 ; i <= N + 1 ; ++i ){
		fscanf(f,"%d",&d[i]);
	}
	for ( i = 2 ; i <= N ; ++i ){
		bst[i][i+1]  = d[i-1] * d[i] * d[i+1];
	}
	
	for ( k = 2 ; k < N ; ++k ){
		for ( i = 2 ; i + k <= N + 1; ++i ){
			bst[i][i+k] = Inf;
			for ( j = i  ; j < i + k ; ++j ){
				aux = bst[i][j] + bst[j+1][i+k] + d[i-1] * d[i+k] * d[j] ;
				if ( bst[i][i+k] > aux )
					bst[i][i+k] = aux;
			}
			
		}
		
	}
	fprintf(g,"%lld\n",bst[2][N+1]);
	
	fclose(f);
	fclose(g);
	
	return 0;
}