Cod sursa(job #3347338)

Utilizator Edyci123Bicu Codrut Eduard Edyci123 Data 16 martie 2026 12:47:48
Problema Parantezare optima de matrici Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include <iostream>
#include <vector>

#define INF 0x3f3f3f3f
#define NMAX 505

using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

int n;
int dp[NMAX][NMAX];

int solve(vector<int> &d, int i, int j) {
    if (dp[i][j]) {
        return dp[i][j];
    }

    if (j - i == 1) {
        return 0;
    }

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

    dp[i][j] = mini;
    return mini;
}

int main() {
    f >> n;
    vector<int> d(n + 2, 0);
    for (int i = 1; i <= n + 1; i++) {
        f >> d[i];
    }

    g << solve(d, 1, n + 1);
    
    return 0;
}