Cod sursa(job #650721)

Utilizator FIIGGTGafita Grigore Tarsichi FIIGGT Data 18 decembrie 2011 20:33:26
Problema Parantezare optima de matrici Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>
long long m[505][505]; 
long long v[505]; 
int n; 
int citeste_dimensiuni()
{
 FILE *in;
 in=fopen("podm.in","r");
 if(!in)
 {
 printf("EROARE");
 return 0;
 }
 int i;
  fscanf(in,"%lld",&n);
 for(i=0;i<=n;i++)
  fscanf(in,"%lld",&v[i]);
  fclose(in);
}
void inmultire_matrici()
{
 int i;
 for(i=1;i<n;i++)
  m[i][i+1]=v[i-1]*v[i]*v[i+1];
}
void minim()
{
 int i,j,k,l;
 for(i=2;i<=n;i++) 
  for(j=1;j+i<=n;j++) 
  {
   k=j+i; 
   m[j][k]=(long long)999999999*999999999;
			for(l=j;l<=k;l++)
             if(m[j][k]>m[j][l]+m[l+1][k] + v[j-1]*v[l]*v[k])
				m[j][k]=m[j][l]+m[l+1][k] + v[j-1]*v[l]*v[k];
		}
}

int main()
{
 FILE *out;
 out=fopen("podm.out","w");
 citeste_dimensiuni();
 inmultire_matrici();
 minim();
 fprintf(out,"%lld",m[1][n]);
 fclose(out);
 return 0;
}