Cod sursa(job #371555)

Utilizator mlazariLazari Mihai mlazari Data 5 decembrie 2009 19:42:06
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>

#define NMAX 500
#define ll long long

int n,i,j,k;
ll min,minc;
ll d[NMAX];
ll m[NMAX][NMAX];

int main() {
  freopen("podm.in","r",stdin);
  freopen("podm.out","w",stdout);
  scanf("%d",&n);
  for(i=0;i<=n;i++) scanf("%lld",d+i);

  for(i=0;i<n-1;i++) m[i][i+1]=d[i]*d[i+1]*d[i+2];
  for(i=2;i<n;i++)
   for(j=0;j<n-i;j++) {
     min=d[j]*d[j+1]*d[j+i+1]+m[j+1][j+i];
     for(k=j+1;k<j+i;k++) {
       minc=m[j][k]+m[k+1][j+i]+d[j]*d[k+1]*d[j+i+1];
       if(minc<min) min=minc;
     }
     m[j][j+i]=min;
   }

  printf("%lld\n",m[0][n-1]);

  return 0;
}