Cod sursa(job #796027)

Utilizator radustn92Radu Stancu radustn92 Data 10 octombrie 2012 02:03:11
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>
#define NMAX 505
#define ll long long
#define INF (1LL<<62)
int n,A[NMAX];
ll best[NMAX][NMAX];
inline ll min(ll x,ll y)
{
	return x<y ? x : y;
}
int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	scanf("%d",&n);
	int i,j,k,st,dr;
	for (i=1; i<=n+1; i++)
		scanf("%d",&A[i]);
	for (i=2; i<=n; i++)
		for (j=1; j<=n-i+1; j++)
		{
			st=j; dr=j+i-1;
			best[st][dr]=INF;
			for (k=st; k<dr; k++)
				best[st][dr]=min(best[st][dr],best[st][k]+best[k+1][dr]+(ll)A[st]*A[k+1]*A[dr+1]);
		}
	printf("%lld\n",best[1][n]);
	return 0;
}