Cod sursa(job #647817)

Utilizator emy_0o7Grigore Emil emy_0o7 Data 11 decembrie 2011 23:28:34
Problema Parantezare optima de matrici Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#include<stdio.h>
#define INF   100000000000000000LL
long long m[500][500],v[500];   
int n;
int min(long long a,long long b)
{
 if(a<b)
  return a;
 else
  return b;
}

int main()
{
 int i,a,b,j;
 FILE *in,*out;
 in=fopen("podm.in","r");
 if(!in)
 {
 printf("EROARE");
 return 0;
 }
 out=fopen("podm.out","w");
 if(!out)
 {
 printf("EROARE");
 return 0;
 }
 fscanf(in,"%d",&n);
 for(i=0;i<=n;i++)  
  fscanf(in,"%llu",&v[i]);   
  for(i=1;i<=n;i++)  
   m[i][i]=0;
  for(i=1;i<=n;i++)  
   m[i][i+1]=v[i-1]*v[i]*v[i+1];
  for(a=2;a<=n-1;a++) 
   for(i=1;i<=n;i++) 
   {
    j=i+a;
    m[i][j]=INF;
    for(b=i;b<=j-1;b++)
     m[i][j]=min(m[i][j],m[i][b]+m[b+1][j]+v[i-1]*v[b]*v[j]);
    }
    fprintf(out,"%llu",m[1][n]);
   fclose(out);
   fclose(in);

    return 0;
}