Cod sursa(job #1654713)

Utilizator gabor.vlad13lil pump gabor.vlad13 Data 17 martie 2016 13:12:28
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

long long vec[510],  mat[505][505];
int n;

void Solve()
{
    for (int i=1; i<=n; i++)
    {
        mat[i][i+1] = vec[i-1] * vec[i]* vec[i+1];
    }

    for (int j=2; j<=n; j++)
    {
        for (int i=0; i<=n-j ; i++)
        {
            int linie = i + 1;
            int coloana = i + j;

            long long minim = 92233720368547758;

            for (int k=linie; k<coloana; k++)
            {
                long long aux = mat[linie][k] + mat[k+1][coloana] + vec[linie-1] * vec[k] * vec[coloana];
                if (aux < minim)
                    minim = aux;
            }
            mat[linie][coloana] = minim;
        }
    }

    printf("%d", mat[1][n]);
}

void Read()
{
    scanf("%d\n", &n);
    for (int i=0; i<=n; i++)
    {
        scanf("%d ", &vec[i]);
    }
}

int main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);
    Read();
    Solve();
    return 0;
}