Cod sursa(job #654322)

Utilizator ELHoriaHoria Cretescu ELHoria Data 30 decembrie 2011 11:14:05
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
#define LL long long

using namespace std;

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

const LL INF = 2e16;
LL dp[512][512] , d[512];
int N;

int main()
{
	fin>>N;
	for(int i = 0;i<=N;++i)
		fin>>d[i];

	for(int i = 1;i<=N;++i) dp[i][i] = 0;

	for(int i = 1;i<N;++i)
	dp[i][i + 1] = d[i-1] * d[i] * d[i + 1];

	for(int L = 2;L < N;++L)
		for(int i = 1;i<=N - L;++i)
		{
			int j = i + L;
			dp[i][j] = INF;
			for(int k = i;k < j;++k)
				dp[i][j] = min(dp[i][j],dp[i][k] + dp[k + 1][j] + d[i-1] * d[k] * d[j]);
		}
	fout<<dp[1][N];
	return 0;
}