Cod sursa(job #2790349)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 28 octombrie 2021 20:36:47
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

inline void Open(const string Name) {
    #ifndef ONLINE_JUDGE
        (void)!freopen((Name + ".in").c_str(), "r", stdin);
        (void)!freopen((Name + ".out").c_str(), "w", stdout);
    #endif
}

const long long INF = 1e18;

long long dp[501][501];
int v[501];
int N;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    Open("podm");

    cin >> N;
    for(int i = 0;i <= N;i++)
        cin >> v[i];

    for(int pas = 2;pas <= N;pas++)
        for(int i = 1;i <= N - pas + 1;i++) {
            int j = i + pas - 1;
            dp[i][j] = INF;
            for(int k = i;k < j;k++)
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + 1LL * v[i - 1] *  v[k] * v[j]);
        }

    cout << dp[1][N];

    return 0;

}