Cod sursa(job #473528)
| Utilizator | Data | 30 iulie 2010 01:03:01 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.6 kb |
#include <cstdio>
const long long inf=1<<18;
int n,d[505],i,j,ln,col;
long long a[505][505];
int main()
{
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&n);
for (i=0;i<=n;++i)
scanf("%d",&d[i]);
for (i=2;i<=n;++i)
for (ln=1,col=i;col<=n;++ln,++col)
{
a[ln][col]=inf;
for (j=ln;j<col;++j)
if (a[ln][j]+a[j+1][col]+1LL*d[ln-1]*d[j]*d[col]<a[ln][col])
a[ln][col]=a[ln][j]+a[j+1][col]+1LL*d[ln-1]*d[j]*d[col];
}
printf("%lld",a[1][n]);
return 0;
}
