Cod sursa(job #699425)

Utilizator Catah15Catalin Haidau Catah15 Data 29 februarie 2012 19:16:09
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

#define maxN 505
#define inf (1LL << 60)
#define int64 long long

int64 M[maxN][maxN], D[maxN];;

int main()
{
	freopen ("podm.in", "r", stdin);
	freopen ("podm.out", "w", stdout);
	
	int N;
	
	scanf ("%d", &N);
	
	for (int i = 0; i <= N; ++ i) scanf ("%lld", &D[i]);
	
	for (int d = 1; d < N; ++ d)
		for (int i = 1; i <= N - d; ++ i)
		{
			M[i][i + d] = inf;
			
			for (int k = i; k < i + d; ++ k) 
				M[i][i + d] = min (M[i][i + d], M[i][k] + M[k + 1][i + d] + D[i - 1] * D[k] * D[i + d]);
		}
	
	printf ("%lld", M[1][N]);
	
	return 0;
}