Cod sursa(job #1916678)

Utilizator horiainfoTurcuman Horia horiainfo Data 9 martie 2017 10:07:08
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#include <algorithm>

#define ll long long
#define INF   100000000000000000LL
using namespace std;

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

int n;
unsigned ll d[501], dp[501][501];

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

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

	for (int lg = 2; lg <= n; lg++)
		for (int i = 1; i <= n - lg + 1; i++)
		{
			dp[i][i + lg - 1] = INF;
			for (int k = 1; k < lg; k++)
				dp[i][i + lg - 1] = min(dp[i][i + lg - 1],
					dp[i][i + k - 1] + dp[i + k][i + lg - 1] + d[i - 1] * d[i + k - 1] * d[i + lg - 1]);
		}

	fout << dp[1][n];
	return 0;
}