Cod sursa(job #1072247)

Utilizator nnnmmmcioltan alex nnnmmm Data 4 ianuarie 2014 11:15:01
Problema Parantezare optima de matrici Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.69 kb
#include<stdio.h>
#define MAXN  505
#define Min(a, b) ((a) < (b) ? (a):(b))
#define INF   100000000000000000LL
long long bst[MAXN][MAXN],d[MAXN];
int n;
int main()
{
 int i,w,k;
 FILE *fin=fopen("pdm.in","r");
 FILE *fout=fopen("pdm.out","w");
 fscanf(fin,"%d",&n);
 for(i=0;i<=n;i++)
     fscanf(fin,"%I64d",&d[i]);
 for(i=1;i<=n;i++)
     bst[i][i]=0;
 for(i=1;i<=n-1;i++)
     bst[i][i+1]=d[i-1]*d[i]*d[i+1];
 for(w=2;w<=n-1;w++)
     for(i=1;i<=n-w;i++)
         {
          int j=i+w;
          bst[i][j]=INF;
          for(k=i;k<=j-1;k++)
              bst[i][j]=Min(bst[i][j],bst[i][k]+bst[k+1][j]+d[i-1]*d[k]*d[j]);
         }
 fprintf(fout,"%I64d",bst[1][n]);
return 0;
}