Cod sursa(job #1144311)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 16 martie 2014 21:35:44
Problema Parantezare optima de matrici Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
long long x[501], m[502][502];
int main(){
    long long n, i, d, j, akm;
    FILE *fin, *fout;
    fin=fopen("podm.in", "r");
    fout=fopen("podm.out", "w");
    fscanf(fin, "%lld", &n);
    for(i=0; i<=n; i++){
        fscanf(fin, "%lld", &x[i]);
    }
    for(i=1; i<n; i++){
        m[i][i+1]=x[i-1]*x[i]*x[i+1];
    }
    for(d=2; d<n; d++){
        for(i=1; i<=n-d; i++){
            m[i][i+d]=2000000000;
            for(j=i; j<i+d; j++){
                akm=m[i][j]+m[j+1][i+d]+(x[i-1]*x[j]*x[i+d]);
                if(akm<m[i][i+d]){
                    m[i][i+d]=akm;
                }
            }
        }
    }
    fprintf(fout, "%lld\n", m[1][n]);
    fclose(fin);
    fclose(fout);
    return 0;
}