Cod sursa(job #2722977)

Utilizator beingsebiPopa Sebastian beingsebi Data 13 martie 2021 14:07:35
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
// #define f cin
// #define g cout
// code-runner.runInTerminal
int n, v[502];
long long dp[502][502];
int main()
{
    f >> n;
    for (int i = 1; i <= n + 1; i++)
        f >> v[i];
    for (int i = 1; i < n; i++)
        dp[i][i + 1] = 1ll * v[i] * v[i + 1] * v[i + 2];
    for (int lg = 3; lg <= n; lg++)
        for (int i = 1; i + lg - 1 <= n; i++)
        {
            int nd = i + lg - 1;
            dp[i][nd] = LLONG_MAX;
            for (int j = i; j < nd; j++)
            {
                long long cst = (long long)dp[i][j] + dp[j + 1][nd] +
                                1ll * v[i] * v[j + 1] * v[nd + 1];
                dp[i][nd] = min(dp[i][nd], cst);
            }
        }
    g << dp[1][n];
    return 0;
}