Cod sursa(job #3305737)

Utilizator paulihno15Ciumandru Paul paulihno15 Data 4 august 2025 15:31:26
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
#define NMAX 500
#define ll long long
#define ull unsigned long long

using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

int n;
int dim[NMAX + 2];
ll dp[NMAX + 2][NMAX + 2];

int main() {
    ios::sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);

    fin >> n;
    for (int i = 0; i <= n; i++) {
        fin >> dim[i];
    }

    for (int i = 1; i <= n - 1; i++) {
        dp[i][i + 1] = 1LL * dim[i - 1] * dim[i] * dim[i + 1];
    }
    for (int lg = 2; lg <= n - 1; lg++) {
        for (int i = 1; i <= n - lg; i++) {
            int j = i + lg;
            dp[i][j] = LLONG_MAX;
            for (int k = i; k < j; k++) {
                dp[i][j] = min(dp[i][j], 1LL * dp[i][k] + dp[k + 1][j] + 1LL * dim[i - 1] * dim[k] * dim[j]);
            }
        }
    }

    fout << dp[1][n];
    return 0;
}