Cod sursa(job #2500771)

Utilizator flibiaVisanu Cristian flibia Data 28 noiembrie 2019 17:34:39
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#pragma GCC optimize("03")
#include <bits/stdc++.h>
#define ll long long 
#define fi first
#define se second 
#define mod 1000000007

using namespace std;

int n;
ll dp[510][510], a[510];

int main() {
    ifstream cin("podm.in");
    ofstream cout("podm.out");
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);

    cin >> n;
    for (int i = 1; i <= n + 1; i++)
        cin >> a[i];

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            dp[i][j] = LLONG_MAX;

    for (int i = 1; i <= n; i++)
        dp[i][i] = 0;

    for (int len = 2; len <= n; len++) {
        for (int st = 1; st + len - 1 <= n; st++) {
            int dr = st + len - 1;  
            for (int k = st; k < dr; k++) {
                dp[st][dr] = min(dp[st][dr], dp[st][k] + dp[k + 1][dr] + a[st] * a[k + 1] * a[dr + 1]);
            }
        }
    }

    cout << dp[1][n];

    return 0;
}