Cod sursa(job #518352)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 31 decembrie 2010 12:03:39
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
long long a[501][501],m1,m2;
int dim[501],i,n,j,d,k,v[501];

int main()
{freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d\n",&n);
for(i=0;i<=n;i++)
       scanf("%d",&dim[i]);
for(i=1;i<=n;i++)
       a[i][i]=0;
for(i=1;i<=n-1;i++)
       a[i][i+1]=dim[i-1]*dim[i]*dim[i+1];
for(d=2;d<n;d++)
       {for(i=1;i<=n-d;i++)
               {m1=a[i][i]+a[i+1][i+d]+dim[i-1]*dim[i]*dim[i+d];
               for(k=i+1;k<i+d;k++)
                        {m2=a[i][k]+a[k+1][i+d]+dim[i-1]*dim[k]*dim[i+d];
                        if(m1>m2)
                                 m1=m2;}
               a[i][i+d]=m1;}}
m1=a[1][n];
i=0;
while(m1!=0)
       {v[i++]=m1%10;
       m1/=10;}
for(j=i-1;j>=0;j--)
       printf("%d",v[j]);
fclose(stdin);
fclose(stdout);
return 0;}