Cod sursa(job #677447)

Utilizator CS-meStanca Marian Ciprian CS-me Data 10 februarie 2012 11:09:29
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<stdio.h>
#define INF (1LL<<62)
FILE *fin=fopen("podm.in","r");
FILE *fout=fopen("podm.out","w");

long long d[505][505],val;
int l[510],c[510];
int n,i,j,k,diag;

int main(){


    fscanf(fin,"%d",&n);
    fscanf(fin,"%d %d",&l[1],&c[1]);

    for(i=2;i<=n;i++){
        l[i]=c[i-1];
        fscanf(fin,"%d",&c[i]);
    }

    for(i=1,j=2; j<=n; i++, j++){
        d[i][j]=(long long)l[i]*c[i]*c[j];
    }

    for(diag=3;diag<=n;diag++){
        for(i=1,j=diag;j<=n;i++,j++){

            d[i][j]=INF;
            for(k=i;k<=j-1;k++){
                val=d[i][k]+d[k+1][j]+ (long long)l[i]*c[k]*c[j];

                if(val<d[i][j]){
                    d[i][j]=val;
                }
            }
        }
    }

    fprintf(fout,"%lld",d[1][n]);


return 0;
}