Cod sursa(job #371233)

Utilizator FlorianFlorian Marcu Florian Data 4 decembrie 2009 15:20:35
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<cstdio>
#include<algorithm>
using namespace std;
#define MAX_N 502
#define Inf 100000000000000000LL
#define ll long long
ll bst[MAX_N][MAX_N];
ll d[MAX_N];
int N;
int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	scanf("%d",&N);
	int i,j,k;
	for(i=1;i<=N+1;++i) scanf("%d",&d[i]);
	for(j = 1; j < N; ++j)
		for(i=1; i + j <= N; ++i)
		{
			bst[i][i + j] = Inf;
			for(k = i; k < i + j; ++k)
				bst[i][i + j] = min(bst[i][i + j], bst[i][k] + bst[k+1][i+j] + d[i] * d[k+1] * d[i + j + 1]);
		}
	printf("%lld\n",bst[1][N]);
	return 0;
}