Cod sursa(job #771904)

Utilizator igsifvevc avb igsi Data 27 iulie 2012 15:41:46
Problema Parantezare optima de matrici Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>

long long Optim[501][501];
int S[501], N;

int main()
{
    int i, d, k;
    long long min, cost;
    FILE *in = fopen ("podm.in", "r");
    FILE *out = fopen ("podm.out", "w");

    fscanf (in, "%d", &N);
    for (i = 0; i<= N; ++i) fscanf (in, "%d", &S[i]);

    for(d = 1; d <= N-1; ++d)
        for(i = 1; i <= N-d; ++i)
        {
            min = Optim[i][i] + Optim[i+1][i+d] + S[i-1] * S[i] * S[i+d];
            for(k = 1; k < d; ++k)
            {
                cost = Optim[i][i+k] + Optim[i+k+1][i+d] + S[i-1] * S[i+k] * S[i+d];
                if(cost < min) min = cost;
            }
            Optim[i][i+d] = min;
        }

    fprintf(out, "%lld\n", Optim[1][N]);

    fclose(in);
    fclose(out);
    return 0;
}