Cod sursa(job #542752)

Utilizator Catah15Catalin Haidau Catah15 Data 26 februarie 2011 22:14:23
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
// Parantezare optima de matrici

#include <fstream>
#include <iostream>

using namespace std;

#define MAXN 505
#define INF 9999999999999999999LL


long long m[MAXN][MAXN];
int n, d[MAXN];

int main() 
{
	ifstream f("podm.in");
	ofstream g("podm.out");
	
	f >> n;
	
	for (int i = 1; i <= n + 1; ++i)
		f >> d[i];
	
	for (int v = 1; v < n; ++v)
		for (int i = 1; i <= n - v; ++i)
		{
			int l = i, c = i + v;
			
			long long infinity = INF;
			
			for (int k = l; k < c; ++k)
				infinity = min (m[l][k] + m[k + 1][c] + d[l] * d[k + 1] * d[c + 1], infinity);
			
			m[l][c] = infinity;
		}
		
	g << m[1][n];
	
	f.close();
	g.close();
	
	return 0;
}