Cod sursa(job #1077443)

Utilizator sorin2kSorin Nutu sorin2k Data 11 ianuarie 2014 13:02:07
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
#include<climits>
using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

int n, i, j, k, l;
long long aux, sum, dp[501][501], dim[501];

int main() {
	fin >> n;
	for(i = 0; i < n+1; i++) {
		fin >> dim[i];
	}
	// pe diagonala principala avem deja 0 (cazul pt l = 1)
	for(l = 2; l <= n; l++) {
		for(i = 1; i <= n-l+1; i++) {
			j = i + l - 1;
			sum = LLONG_MAX;
			for(k = i; k < j; k++) {
				aux = dp[i][k] + dp[k+1][j] + dim[i-1] * dim[k] * dim[j];
				if(aux < sum) {
					sum = aux;
				}
			}
			dp[i][j] = sum;
		}
	}
	fout << dp[1][n];
	return 0;
}