Cod sursa(job #1571702)
| Utilizator | Data | 18 ianuarie 2016 13:23:05 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.57 kb |
#include<cstdio>
long long ma[502][502];
long long v[502];
int main ()
{freopen ("podm.in","r",stdin);
freopen ("podm.out","w",stdout);
long long n,i,j,k,x,q;
scanf("%lld",&n);
for(i=1;i<=n+1;i++)
scanf("%lld",&v[i]);
for(i=1;i<n;i++)
ma[i][i+1]=v[i]*v[i+1]*v[i+2];
for(q=3;q<=n;q++)
for(i=1,j=q;j<=n;i++,j++)
{x=1000000000000000000;
for(k=i;k<j;k++)
if(ma[i][k]+ma[k+1][j]+v[i]*v[k+1]*v[j+1]<x)
x=ma[i][k]+ma[k+1][j]+v[i]*v[k+1]*v[j+1];
ma[i][j]=x;
}
printf("%d",ma[1][n]);
return 0;
}
