Cod sursa(job #823964)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 25 noiembrie 2012 19:22:16
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>

using namespace std;

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

typedef long long LL;
const LL INF = 1LL << 60 - 1;
const int MAXN = 505;

int A[MAXN];
LL Best[MAXN][MAXN];

inline LL _min (LL A, LL B)
{
	if (A < B)
		return A;
	
	return B;
}

int main ()
{
	int N, i, j, k, x;
	
	in >> N;
	
	for (i = 0; i <= N; i ++)
		in >> A[i];
	
	for (i = 1; i < N; i ++)
		Best[i][i + 1] = A[i - 1] * A[i] * A[i + 1];
	
	for (i = 2; i < N; i ++)
		for (j = 1; j <= N - i; j ++){
			x = i + j;
			Best[j][x] = INF;
			
			for (k = j; k < x; k ++)
				Best[j][x] = _min (Best[j][x], Best[j][k] + A[j - 1] * A[x] * A[k]);
		}
		
	out << Best[1][N];
	
	return 0;
}