Cod sursa(job #1545353)

Utilizator AndreeaBaltaBalta Andreea Cristina AndreeaBalta Data 6 decembrie 2015 17:47:03
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>

using namespace std;

long long v[505], c[505][505];

int main()
{
    FILE *in, *out;
    in = fopen("podm.in", "r");
    out = fopen("podm.out", "w");
    int i, j, k, var, n;
    long long min = 99999999999999;
    fscanf(in, "%d", &n);
    for(i = 0; i <= n; i++)
        fscanf(in, "%lld", &v[i]);
    //c[i][j] = nr minim de operatii din matrice
    for(i = 1; i < n; i++)
        c[i][i+1] = v[i-1] * v[i] * v[i+1];
    for(j = 2; j < n; j++)
    {
        for(i = 1; i <= n-j+1; i++)
        {
            min = c[i][i] + c[i+1][i+j] + v[i-1] * v[i] * v[i+j];
            for(k = i+1; k <= i+j-1; k++)
            {
                var = c[i][k] + c[k+1][i+j] + v[i-1] * v[k] * v[i+j];
                if(var < min)
                    min = var;
            }
            c[i][i+j] = min;
        }
    }
    fprintf(out, "%lld\n", c[1][n]);
    return 0;
}