Cod sursa(job #1106484)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 12 februarie 2014 20:48:59
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
#include<limits.h>
#define DIM 505
FILE *f=fopen("podm.in","r"), *g=fopen("podm.out","w");

long int n, v[DIM];
long long int a[DIM][DIM];

void citire(){
long int i;

    fscanf(f,"%ld\n",&n);
    for(i=1;i<=n+1;i++)
        fscanf(f,"%ld",&v[i]);

}

void rezolvare(){
long int l, i, j, k;
long long int minim, cost;

    for(l=2;l<=n;l++)
        for( i=1; i+l-1<=n; i++ ){
             j= i+l-1;

            minim=LONG_LONG_MAX;

            for(k=i;k<=j-1;k++){

                cost= a[i][k] + a[k+1][j] + 1LL * v[i] * v[k+1] * v[j+1];
                if( cost<minim ) minim=cost;
            }
            a[i][j]=minim;
        }

    fprintf(g,"%lld\n",a[1][n]);

}

int main(){

    citire();
    rezolvare();

return 0;
}