Cod sursa(job #377464)

Utilizator Addy.Adrian Draghici Addy. Data 24 decembrie 2009 18:38:42
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#define Nmax 502
#define INF 1LL << 60

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

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]);
	
	for (i = 1; i < n; i++)
		C[i][i+1] = (long long)d[i] * d[i+1] * d[i+2];
	
	for (l = 3; l <= n; l++)
		for (i = 1; i + l - 1 <= n; i++) {
			j = i + l - 1;
			C[i][j] = INF;
			for (k = i; k < j; k++) {
				c = C[i][k] + C[k+1][j] + (long long)d[i] * d[k+1] * d[j+1];
				if (c < C[i][j])
					C[i][j] = c;
			}
		}
	
	fprintf(g, "%lld", C[1][n]);
	
	fclose(f); fclose(g);
	
	return 0;
}