Cod sursa(job #3274213)

Utilizator nusuntvictorVictor Stefan nusuntvictor Data 5 februarie 2025 18:22:26
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
#define INF   100000000000000000LL
using namespace std;

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

int n; long long d[502], dp[502][502];

int main() {
    fin >> n;
    // Citim dimensiunile matricelor
    for (int i = 0; i <= n; ++i)
        fin >> d[i];

    // Programare dinamică pentru subșiruri de lungime crescătoare
    for (int len = 2; len <= n; ++len) {  // lungimea subsecvenței
        for (int i = 1; i <= n - len + 1; ++i) {
            int j = i + len - 1;
            dp[i][j] = INF;  // Inițializăm cu un număr mare

            for (int k = i; k < j; ++k) {
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + d[i - 1] * d[k] * d[j]);
            }
        }
    }

    fout << dp[1][n] << '\n';
}