Cod sursa(job #1494444)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 1 octombrie 2015 09:12:31
Problema Parantezare optima de matrici Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>
#define lim 500
#define max 1000000000000000000
int v[lim+2];
long long c[lim+1][lim+1];
long long min(long long a,long long b){
    if(a<b)
        return a;
    else
        return b;
}
int main(){
    FILE *fin,*fout;
    fin=fopen("podm.in","r");
    fout=fopen("podm.out","w");
    int i,j,k,n;
    fscanf(fin,"%d",&n);
    for(i=0;i<=n;i++)
        fscanf(fin,"%d",&v[i]);
    for(i=1;i<=n-1;i++)
        c[i][i+1]=v[i-1]*v[i]*v[i+1];
    for(i=2;i<=n-1;i++)
        for(j=1;j<=n-i;j++){
            c[j][i+j]=max+1;
            for(k=j;k<=i+j-1;k++)
                c[j][i+j]=min(c[j][i+j],c[j][k]+c[k+1][i+j]+(long long)v[j-1]*v[k]*v[i+j]);
        }
    fprintf(fout,"%lld",c[1][n]);
    fclose(fin);
    fclose(fout);
    return 0;
}