Cod sursa(job #384399)

Utilizator hulparuadrianhulparu adrian hulparuadrian Data 19 ianuarie 2010 23:45:25
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#include<stdlib.h>
#define SIZE 500
long int n, d[SIZE], m[SIZE][SIZE],mp;
long int min(long int i, long int j)
{
long int minim = m[i][i]+m[i+1][j]+d[i-1]*d[i]*d[j];
for(long int k=i+1; k<j; k++)
{
mp = m[i][k] + m[k+1][j] + d[i-1]*d[k]*d[j];
if (mp<minim) minim = mp;
}
return minim;
}

int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	scanf("%d", &n);
	int i;
	for(i=0; i<=n; i++)
	scanf("%li", &d[i]);
	fclose(stdin);

	for(i=n-1; i>=1; i--)
	for(long int j=i+1; j<=n; j++)
	if (j==i+1)
	m[i][i+1] = d[i-1]*d[i]*d[i+1];
	else
	m[i][j] = min(i,j);
	printf("%li\n",m[1][n]);
	fclose(stdout);
	return 0;
}