Cod sursa(job #648109)

Utilizator emy_0o7Grigore Emil emy_0o7 Data 13 decembrie 2011 01:18:23
Problema Parantezare optima de matrici Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#include<stdio.h>
#define INF   100000000000000000LL

unsigned long long min(unsigned long long a,unsigned long long b)
{
 if(a<b)
  return a;
 else
  return b;
}

int main()
{
 int i,a,b,j,n;
 unsigned long long m[505][505],v[505];   
 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,"%llu",&n);
 for(i=0;i<=n;i++)  
  fscanf(in,"%llu",&v[i]);   
  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;
}