Cod sursa(job #678763)
| Utilizator | Data | 12 februarie 2012 13:06:59 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.49 kb |
#include<stdio.h>
int n , i , k , j , d , D[510];
long long V[510][510];
int main(){
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n+1;i++)
scanf("%d",&D[i]);
for(d=2;d<=n;d++){
for(i=1,j=d;j<=n;i++,j++){
for(k=i;k<=j;k++){
if((V[i][k]+V[k+1][j]+(long long)D[i]*D[k+1]*D[j+1])<V[i][j]||V[i][j]==0){
V[i][j]=V[i][k]+V[k+1][j]+(long long)D[i]*D[k+1]*D[j+1];
}
}
}
}
printf("%lld",V[1][n]);
return 0;
}
