Cod sursa(job #651268)

Utilizator FIIBogdanPricopPricop Mihai FIIBogdanPricop Data 20 decembrie 2011 01:36:39
Problema Parantezare optima de matrici Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#define MAX 100000000000000000LL
long long min(int a,int b)
    {
	return a<b ? a : b;
    }
int dim[506],N;
void read()
    {
	FILE *fin;
	fin=fopen("podm.in","r");
	int i;
	fscanf(fin,"%d",&N);
	for(i=0;i<=N;i++)
	    fscanf(fin,"%d",&dim[i]);
	fclose(fin);
    }
void print(int m)
    {
	FILE *fout;
	fout=fopen("podm.out","w");
	fprintf(fout,"%d",m);
	fclose(fout);
    }
int main()
    {
	int i,j,d,k;
	long long M[505][505];
	read();
	for(i=1;i<=N;i++)
		M[i][i]=0;
	
	for(d=1;d<N;d++)
	    {
		for(i=1;i<=N-d;i++)
		    {
			M[i][i+d]=MAX;
			for(k=i;k<i+d;k++)
			    M[i][i+d]=min(M[i][i+d],M[i][k]+M[k+1][i+d]+dim[i-1]*dim[k]*dim[i+d]);
		    }
	    }
	print(M[1][N]);
	return 0;
    }