Cod sursa(job #3292729)

Utilizator ValiAntonieAntonie Valentin ValiAntonie Data 9 aprilie 2025 09:45:42
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

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

long long n, d[505], dp[505][505];

int main()
{
// dp[i][j] - numarul minim de inmultiri folosind matrici de la i la j
fin>>n;
for (int i = 1; i <= n; i++){
    for (int j = 1; j <= n; j++){
        dp[i][j] = 99999999999;
    }
}
for (int i = 1; i <= n; i++){
    dp[i][i] = 0;
}
for (int i = 1; i <= n + 1; i++){
    fin>>d[i];
}
for (int i = 1; i < n; i++){
    dp[i][i+1] = d[i] * d[i+1] * d[i+2];
}
for (int lung = 2; lung < n; lung++){
    for (int i = 1; i <= n; i++){
        int j = i + lung;
        if (j <= n){
            for (int k = i; k <= j - 1; k++){
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + d[i] * d[k+1] * d[j+1]);
            }
        }
    }
}
fout << dp[1][n];
    return 0;
}