Cod sursa(job #371902)

Utilizator katakunaCazacu Alexandru katakuna Data 7 decembrie 2009 19:06:55
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <algorithm>
using namespace std;

#define Nmax 503

int n, i, j, k, l, d[Nmax];
long long a[Nmax][Nmax];

void podm () {
	
	for (i = 1; i < n; i++)
		a[i][i+1] = (long long)d[i] * d[i+1] * d[i+2];
	
	for (k = 3; k <= n; k++) 
		for (i = 1; i <= n; i++) {
			j = i + k - 1; a[i][j] = (long long)1 << 60;
			if (j > n) j = n;
			for (l = i + 1; l <= j; l++) 
				a[i][j] = min (a[i][j], a[i][l-1] + a[l][j] + (long long)d[i] * d[l] * d[j+1]);
		} 

}

int main () {

	FILE *f = fopen ("podm.in", "r");
	FILE *g = fopen ("podm.out", "w");
	
	fscanf (f, "%d", &n);
	for (i = 1; i <= n + 1; i++)
		fscanf (f, "%d", &d[i]);
	
	podm ();
	fprintf (g, "%lld", a[1][n]);
	
	fclose (f);
	fclose (g);
	
	return 0;
}