Cod sursa(job #613420)

Utilizator maritimCristian Lambru maritim Data 24 septembrie 2011 21:07:24
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>

#define MaxN 502
#define ll long long

const ll INF = 1LL*600*600*600*600*1931;

ll N,q,P[MaxN],A[MaxN][MaxN];

int main()
{
	FILE *f = fopen("podm.in","r");
	FILE *g = fopen("podm.out","w");
	
	fscanf(f,"%d ",&N);
	for(int i=0;i<=N;i++)
		fscanf(f,"%d ",&P[i]);
	for(int i=2;i<=N;i++)
		for(int j=1;j<=N-i+1;j++)
		{	
			A[j][i+j-1] = INF;
			for(int k=j;k<i+j-1;k++)
				if(A[j][i+j-1] > A[j][k] + A[k+1][i+j-1] + 1LL*P[j-1]*P[k]*P[i+j-1])
					A[j][i+j-1] = A[j][k] + A[k+1][i+j-1] + 1LL*P[j-1]*P[k]*P[i+j-1];
		}
		
	fprintf(g,"%llu",A[1][N]);
	
	fclose(g);
	fclose(f);
	return 0;
}