Cod sursa(job #2030619)

Utilizator andra1782Andra Alazaroaie andra1782 Data 1 octombrie 2017 21:00:54
Problema Parantezare optima de matrici Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>
#define MAX_N 500
#define min(a,b) a<b?a:b
long long v[MAX_N + 1],Solve[MAX_N + 1][MAX_N + 1];

long long solve(int st, int dr){
    int i;
    long long op;

    if(Solve[st][dr]==0){
        if(st+1==dr)
            Solve[st][dr]=0;
        else{
            op=1LL<<62;
            for(i=st+1; i<dr; i++)
                op=min(op,v[st]*v[i]*v[dr]+solve(st,i)+solve(i, dr));
            Solve[st][dr]=op;
        }
    }
    return Solve[st][dr];
}

int main(){
    FILE *fin=fopen("podm.in","r");
    FILE *fout=fopen("podm.out","w");
    int n,i;

    fscanf(fin,"%d",&n);
    for(i=0; i <= n; i++)
        fscanf(fin,"%lld", &v[i]);
    fprintf(fout,"%lld",solve(0,n));
    fclose(fin);
    fclose(fout);
    return 0;
}