Cod sursa(job #2892281)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 21 aprilie 2022 16:10:02
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>

#define MAX_N 500
#define MULT (1 << 30)

using namespace std;

int d[MAX_N + 1];
long long dp[MAX_N][MAX_N];

int main() {
    ifstream cin( "podm.in" );
    ofstream cout( "podm.out" );

    int n, i, j, k, l;

    cin >> n;
    for ( i = 0; i < n + 1; i++ )
        cin >> d[i];

    for ( l = 1; l < n; l++ ) {
        for ( i = 0; i < n - l; i++ ) {
            j = i + l;
            dp[i][j] = MULT;
            for ( k = i; k <= j - 1; k++ )
                dp[i][j] = min( dp[i][j], dp[i][k] + dp[k + 1][j] + (long long)d[i] * d[k + 1] * d[j + 1] );
        }
    }

    cout << dp[0][n - 1];

    return 0;
}