Cod sursa(job #2167038)

Utilizator adriangh3Adrian Gheorghiu adriangh3 Data 13 martie 2018 19:56:39
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
#pragma pack(1)
#define MAXIM 510
typedef unsigned long long ll;
ll dp[MAXIM][MAXIM];

struct matrice
{
	ll lin, col;
}v[MAXIM];

int main()
{
	ll n, i, j;
	in >> n >> v[0].lin;
	for (i = 1; i <= n; i++)
	{
		in >> v[i].lin;
		v[i - 1].col = v[i].lin;
	}
	for (i = 0; i<n-1; i++)
	{
		dp[i][1 + i] = v[i].lin*v[i].col*v[i + 1].col;
	}
	for (j = 2; j<n; j++)
	{
		for (i = 0; i<n - j; i++)
		{
			int l, c;
			l = i; c = j + i;
			dp[l][c] = ~0;
			for (int k = l; k <= c; k++) if (dp[l][k] + dp[k + 1][c] + v[l].lin*v[k].col* v[c].col < dp[l][c])dp[l][c] = dp[l][k] + dp[k + 1][c] + v[l].lin*v[k].col*v[c].col;
		}
	}
	out << dp[0][n - 1];
	return 0;
}