Cod sursa(job #2981323)

Utilizator Elvis_CostinTuca Elvis-Costin Elvis_Costin Data 17 februarie 2023 18:17:37
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;
string np = "podm";
ifstream f(np + ".in");
ofstream g(np + ".out");

// #define f cin
// #define g cout

long long n, v[503], dp[503][503];

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] = v[i] * v[i + 1] * v[i + 2];

    for (int k = 3; k <= n; k++)
        for (int i = 1; i + k - 1 <= n; i++)
        {
            int z = i + k - 1;
            dp[i][z] = LLONG_MAX;
            for (int j = i; j < z; j++)
            {
                long long cst = (long long)dp[i][j] + dp[j + 1][z];
                cst += v[i] * v[j + 1] * v[z + 1];
                dp[i][z] = min(dp[i][z], cst);
            }
        }

    g << dp[1][n];

    return 0;
}