Cod sursa(job #2881989)

Utilizator the4Designerthe4Designer the4Designer Data 31 martie 2022 08:52:25
Problema Parantezare optima de matrici Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;

#define INF INT_MAX

int main(void) {
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);

    int n; cin >> n;
    long dims[502] = {0};

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

    long dp[501][501];
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            dp[i][j] = INF;
        }
    }

    // base
    for (int i = 1; i <= n; ++i) {
        dp[i][i] = 0;
        dp[i][i + 1] = dims[i + 1] * dims[i] * dims[i + 2];
    }

    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            // get the best cut

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

    cout << dp[1][n];

    return 0;
}