Cod sursa(job #1105927)
| Utilizator | Data | 12 februarie 2014 11:29:03 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.65 kb |
#include<cstdio>
int n,i,j,k,l,v[1000],a,b;
long long s,d[510][510];
FILE *f,*g;
long long minim(long long a,long long b){
if(a<b)
return a;
return b;
}
int main(){
f=fopen("podm.in","r");
g=fopen("podm.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n+1;i++){
fscanf(f,"%d",&v[i]);
}
for(l=1;l<n;l++){
for(i=1;i+l<=n;i++){
j=i+l;
d[i][j]=(1LL<<63)-1;
for(k=i;k<j;k++){
d[i][j]=minim(d[i][j],d[i][k]+d[k+1][j]+v[i]*v[k+1]*v[j+1]);
}
}
}
fprintf(g,"%lld",d[1][n]);
fclose(f);
fclose(g);
return 0;
}
