Cod sursa(job #3339985)

Utilizator PatrikKev75Szucs Patrik - Kevin PatrikKev75 Data 11 februarie 2026 13:51:42
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <climits>

#define ll long long

int main()
{
    short n;
    std::ifstream in("podm.in");
    in >> n;

    short *t = new short[n + 2];

    ll **dp = new ll *[n + 1];
    for (int i = 0; i <= n; i++)
    {
        dp[i] = new ll[n + 1];
        for (int j = 0; j <= n; j++)
            dp[i][j] = (i == j) ? 0 : LLONG_MAX;
    }

    for (short i = 1; i <= n + 1; i++)
        in >> t[i];
    in.close();

    for (int i = n; i >= 1; i--)
    {
        for (int j = i + 1; j <= n; j++)
        {
            for (int k = i; k < j; k++)
            {
                dp[i][j] = std::min(dp[i][j], dp[i][k] + dp[k + 1][j] + (ll)t[i] * t[k + 1] * t[j + 1]);
            }
        }
    }

    std::ofstream out("podm.out");
    out << dp[1][n];
    out.close();

    for (int i = 0; i <= n; i++)
        delete[] dp[i];
    delete[] dp;
    delete[] t;

    return 0;
}