Cod sursa(job #2907913)

Utilizator LeperBearMicu Alexandru LeperBear Data 31 mai 2022 22:18:20
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;
 
ifstream in("podm.in");
ofstream out("podm.out");
#define cin in
#define cout out
#define NMAX 505
#define ll long long

ll dp[NMAX][NMAX], d[NMAX], n;

void dinamic() {
    for (ll i = 1; i < n; i++)
        dp[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
    for (ll w = 2; w < n; w++)
        for (ll i = 1; i + w <= n; i++) {
            ll j = i + w;
            dp[i][j] = LONG_LONG_MAX;
            for (ll 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]);
        }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

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

    dinamic();
    cout << dp[1][n];
}