Cod sursa(job #1526314)

Utilizator PavelPavel Ana-Oriana Pavel Data 16 noiembrie 2015 09:14:48
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>

using namespace std;

FILE *in,*out;

const int M = 1000000000;
const int N = 505;
int d[N];
long long c[N][N];

long long minim(long long a , long long b){
    if(a < b) return a;
    return b;
}

int main()
{
    in = fopen("podm.in","r");
    out = fopen("podm.out","w");
    int i,j,n,k,p;
    fscanf(in,"%d",&n);
    for(i = 0 ; i <= n ; i++)
        fscanf(in,"%d",&d[i]);
    for(i = 0 ; i <n ; i++){
        c[i][i]=0;
        c[i][i+1] = d[i-1]*d[i]*d[i+1];
    }
    for(p = 2; p < n; p++)
        for (i = 1;i <= n-p;i++) {
        int j = i+p;
        c[i][j]=M;
        for (k = i ;k< j ; k++)
            c[i][j]=minim(c[i][j],c[i][k] + c[k+1][j] + d[i-1]*d[k]*d[j]);
    }

    fprintf(out,"%lld\n",c[1][n]);
    return 0;
}