Cod sursa(job #2926590)

Utilizator cristia_razvanCristia Razvan cristia_razvan Data 18 octombrie 2022 09:28:48
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define mp make_pair
#define dbg(x) cout << #x <<": " << x << "\n";
#define sz(x) ((int)x.size())

using ll = long long;

const string fn = "podm";
ifstream fin(fn + ".in");
ofstream fout(fn + ".out");


int n;
ll a[505];
ll dp[505][505];
int main() {

	ios_base::sync_with_stdio(false);
	cin.tie();

	fin >> n;
	for(int i = 0; i <= n; ++i)
        fin >> a[i];
    for(int i = 1; i < n; ++i)
        dp[i][i + 1] = a[i - 1] * a[i] * a[i + 1];
    for(int i = n - 1; i >= 1; --i)
        for(int j = i + 2; j <= n; ++j){
            ll mn = LLONG_MAX;
            for(int k = i; k < j; ++k)
                mn = min(mn, dp[i][k] + dp[k + 1][j] + a[i - 1] * a[k] * a[j]);
            dp[i][j] = mn;
        }
    fout << dp[1][n] << '\n';

	return 0;
}