Cod sursa(job #701711)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 1 martie 2012 17:24:36
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <cstdio>
#define NMAx 512
#define oo (1LL<<60)
#define min(a,b) ((a)<(b)?(a):(b))
using namespace std;

int n,D[NMAx];
long long M[NMAx][NMAx];

void citire() {
	
	freopen("podm.in","r",stdin);
	
	scanf("%d",&n);
	
	for(int i=0;i<=n;i++)
		scanf("%d",&D[i]);
	
	fclose(stdin);
	
}
void afis() {
	
	freopen("podm.out","w",stdout);
	
	printf("%lld",M[1][n]);
	
	fclose(stdout);
	
}
int main() {
	
	int Dif,i,j,k;
	citire();
	
	for(Dif=1;Dif<=n-1;Dif++)
		for(i=1;i+Dif<=n;i++) {
			j=i+Dif;
			M[i][j]=oo;
			for(k=i;k<j;k++)
				M[i][j]=min(M[i][j],M[i][k]+M[k+1][j]+D[i-1]*D[k]*D[j]);
			}
	
	afis();
	
	return 0;
	
}