Cod sursa(job #3360989)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 18 iulie 2026 12:22:26
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

long long dp[502][502];
long long a[502];
long long lin[502], col[502];


int main() {
    ifstream cin("podm.in");
    ofstream cout("podm.out");
	int n;
    cin >> n;
    for(int i = 1; i <= n + 1; i++) {
        cin >> a[i];
    }
    for(int i = 1; i <= n; i++) {
        lin[i] = a[i];
        col[i] = a[i + 1];
    }
    for(int len = 2; len <= n; len++) {
        for(int i = 1; i <= n - len + 1; i++) {
            int j = i + len - 1;
            dp[i][j] = 1e18;
            for(int k = i; k < j; k++) {
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + lin[i] * col[k] * col[j]);
                //cout << lin[i] * col[k] * col[j] << '\n';
            }
        }
    }
    cout << dp[1][n];
}