Cod sursa(job #2956496)

Utilizator Ion.AAlexandru Ion Ion.A Data 19 decembrie 2022 17:40:03
Problema Parantezare optima de matrici Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>

using namespace std;

ifstream in("podm.in");
ofstream out("podm.out");

const int NMAX = 500;
int n, v[NMAX + 2];
long long d[NMAX + 1][NMAX + 1];
bool viz[NMAX + 2][NMAX + 2];

int solve(int st, int dr)
{
    if (viz[st][dr])
    {
        return d[st][dr];
    }
    else
    {
        viz[st][dr] = true;
        if (st == dr)
        {
            d[st][dr] = 0;
            return 0;
        }
        else
        {
            for (int k = st + 1; k <= dr; k++)
            {
                long long c = 0;
                c = solve(st, k - 1) + solve(k, dr) + v[st] * v[k] * v[dr + 1];
                d[st][dr] = min(d[st][dr], c);
            }
            return d[st][dr];
        }
    }
}

int main()
{
    in >> n;
    for (int i = 1; i <= n + 1; i++)
    {
        in >> v[i];
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1;  j <= n; j++)
        {
            d[i][j] = 1e13;
        }
    }
    int rez = solve(1, n);
    out << rez;
    return 0;
}