Cod sursa(job #1490706)

Utilizator DeltaMTP Dragos DeltaM Data 24 septembrie 2015 00:43:05
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<cstdio>
#define INF 1LL<<62
long long n,i,j,k,l,v[1010],w[1010],c[1010],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,"%lld",&n);
    for(i=1;i<=n+1;i++){
        fscanf(f,"%lld",&v[i]);
    }
    w[1]=v[1];
    for(i=2;i<=n;i++){
        w[i]=v[i];
        c[i-1]=v[i];
    }
    c[n]=v[n+1];
    for(l=1;l<=n;l++){
        for(i=1;i+l<=n;i++){
            j=i+l;
            d[i][j]=INF;
            for(k=i;k<=j;k++){
                d[i][j]=minim( d[i][j], d[i][k] + d[k+1][j] + w[i] * c[j] * c[k] );
            }
        }
    }
    fprintf(g,"%d",d[1][n]);
    fclose(f);
    fclose(g);
    return 0;
}