Cod sursa(job #2566838)

Utilizator SqueekDanielTodasca Daniel SqueekDaniel Data 3 martie 2020 13:14:45
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>

#define llg     long long
#define int     llg

#define MAXN    505

int N;
std::vector <int> d;
int DP[MAXN][MAXN];

#define FILENAME    std::string("podm")
std::ifstream input (FILENAME+".in");
std::ofstream output(FILENAME+".out");

int32_t main()
{
    input >> N;
    d.resize(N+1);
    for (auto &it:d) input >> it;

    for (int len=2; len<=N; ++len)
        for (int i=1, j=len; j<=N; ++j, ++i) {
            DP[i][j] = 2e18;
            for (int k=i; k+1<=j; ++k)
                DP[i][j] = std::min(DP[i][j], DP[i][k] + DP[k+1][j] + d[i-1]*d[k]*d[j]);
        }

    output << DP[1][N];

    return 0;
}