Cod sursa(job #1486044)

Utilizator mike93Indricean Mihai mike93 Data 13 septembrie 2015 18:46:12
Problema Parantezare optima de matrici Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>

int main() {
	FILE* fin = fopen("podm.in", "r");
	int n;
	long long d[501];
	int i;
	fscanf(fin, "%d\n", &n);
	for(i=0; i<=n; i++) {
		fscanf(fin, "%LL ", &d[i]);
	}
	fclose(fin);
	
	long long m[501][501];
	for(i=1; i<=n; i++) {
		m[i][i] = 0;
	}
	for(i=1; i<n; i++) {
		m[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
	}
	int dd, k;
	long long min, val;
	for(dd=2; dd<n; dd++) {
		for(i=1; i<=n-dd; i++) {
			min = 1000000000;
			for(k=i; k<i+dd; k++) {
				val = m[i][k] + m[k + 1][i + dd] + d[i - 1] * d[k] * d[i + dd];
				if(min > val) {
					min = val;
				}
			}
			m[i][i + dd] = min;
		}
	}
	
	FILE* fout = fopen("podm.out", "w");
	fprintf(fout, "%LL\n", m[1][n]);
	fclose(fout);
	return 0;
}