Cod sursa(job #2895732)

Utilizator LIR16LazarIonutRadu LIR16 Data 29 aprilie 2022 13:55:00
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

long long dp[501][501];
long long v[501];
long long n;
int main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

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

    for (int d = 0; d < n; d++) {
        for (int i = 1; i <= n - d; i++) {
            if (d == 0) {
                dp[i][i + d] = 0;
            }
            else if (d == 1) {
                dp[i][i + d] = v[i - 1] * v[i] * v[i + 1];
            }
            else {
                dp[i][i + d] = 1e10;
                for (int j = i; j < i + d; j++) {
                    dp[i][i + d] = min(dp[i][i + d], dp[i][j] + dp[j + 1][i + d] + v[i-1]*v[j]*v[i+d]);
                }
            }
        }
    }

    cout << dp[1][n];
    return 0;
}