Cod sursa(job #2660822)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 20 octombrie 2020 16:50:38
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>
#define int long long

using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

inline void min_self(int& a, int b) {
    a = min(a, b);
}

int32_t main() {
    fin.sync_with_stdio(false);
    fout.sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);
    int N;
    fin >> N;
    vector < int > a(N + 1);
    for(int i = 0; i <= N; ++i)
        fin >> a[i];
    vector < vector < int > > dp(N + 1, vector < int >(N + 1, 1e18L));
    for(int i = 1; i <= N; ++i)
        dp[i][i] = 0;
    for(int l = 1; l < N; ++l)
        for(int i = 1; i <= N - l; ++i) {
            int j = i + l;
            for(int k = i; k < j; ++k)
                min_self(dp[i][j], dp[i][k] + dp[k + 1][j] + a[i - 1] * a[k] * a[j]);
        }
    fout << dp[1][N];
}