Cod sursa(job #3370378)

Utilizator Alexutu008Ionita Alexandru-Dumitru Alexutu008 Data 25 octombrie 2026 21:02:05
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;
#define int unsigned long long
const int MAX = 1e18;

int k;
vector<int> v, n, m;
int dp[505][505];

signed main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> k;
    for (int i = 1; i <= k + 1; ++i)
    {
        int x;
        cin >> x;
        v.push_back(x);
    }
    n.push_back(0);
    m.push_back(0);
    for (int i = 0; i < k; ++i)
    {
        n.push_back(v[i]);
        m.push_back(v[i + 1]);
    }

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

    cout << dp[1][k];

    return 0;
}