Cod sursa(job #542216)

Utilizator Catah15Catalin Haidau Catah15 Data 25 februarie 2011 23:00:53
Problema Parantezare optima de matrici Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
// Parantezare optima de matrici

#include <fstream>
#include <iostream>

using namespace std;

#define MAXN 505

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 = v + 1; i <= n; ++i)
		{
			if (m[i - v][i - 1] < m[i - v + 1][i])
			{
				m[i - v][i] = m[i - v][i - 1];
				
				m[i - v][i] += d[i - v] * d[i] * d[i + 1];
			}
			else
			{
				m[i - v][i] = m[i - v + 1][i];
				m[i - v][i] += d[i - v] * d[i - v + 1] * d[i + 1];
			}
		}
	
	g << m[1][n];
	
	f.close();
	g.close();
	
	return 0;
}