Cod sursa(job #420354)

Utilizator adrianraduleaRadulea Adrian adrianradulea Data 18 martie 2010 20:47:18
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<stdio.h>
FILE *f,*g;
long long m[510][510],d[510],min,inf,p,n,k,i;
int main()
{ f=fopen("podm.in","r"); g=fopen("podm.out","w");
  fscanf(f,"%lld",&n);
  for(i=1;i<=n+1;i++) fscanf(f,"%lld",&d[i]);
  for(i=1;i<n;i++) m[i][i+1]=d[i]*d[i+1]*d[i+2];
  inf=100000000000LL;
  for(p=2;p<n;p++)
   { for(i=1;i<=n-p;i++)
      { min=inf;
        for(k=i;k<i+p;k++) if(min>d[i]*d[k+1]*d[i+p+1]+m[i][k]+m[k+1][i+p]) min=d[i]*d[k+1]*d[i+p+1]+m[k+1][i+p]+m[i][k];
		m[i][i+p]=min;
	  }
   }
  fprintf(g,"%lld",m[1][n]);
  fclose(g);
  return 0;
}