Cod sursa(job #432398)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 2 aprilie 2010 12:28:24
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#include <string>


#define INF 0x3f3f3f
#define nmax 510
#define ll long long

using namespace std;

ll bst [nmax][nmax];
int i, j, k, m, d [nmax], n;

int main ()
{
	freopen ("podm.in", "r", stdin);
	freopen ("podm.out", "w", stdout);
	scanf ("%d\n", &n);
	for (i = 0; i <= n; i++)
		scanf ("%d", &d [i]);
	memset (bst, INF, sizeof (bst));
	//debug (bst);
	for (i = 0; i <= n; i++) bst [i][i] = 0;
	for (i = 1; i < n; i++) bst [i][i + 1] = d [i - 1] * d [i] * d [i + 1];
	for (k = 2; k < n; k++)
		for (i = 1; i <= n - k; i++)
		{	
			j = i + k;
			for (m = i; m < j; m++)
				bst [i][j] = min (bst [i][j], bst [i][m] + bst [m + 1][j] + d [i - 1] * d [m] * d [j]);
		}
	printf ("%lld\n", bst [1][n]);
	return 0;
}