Cod sursa(job #2446013)

Utilizator Bulboaca_EugenBulboaca Alexandru Eugen Bulboaca_Eugen Data 6 august 2019 18:00:29
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
const int MAXN = 1e3 + 3;
const long long INF = 1e18;
long long v[MAXN], dp[MAXN][MAXN];
int main(){
    int n; fin >> n;
    for(int i = 1; i <= n + 1; ++i) fin >> v[i];
    for(int k = 2; k <= n; ++k){
        for(int i = 1; i + k <= n + 1; ++i){
            dp[i][k] = INF;
            int finish = i + k - 1;
            if(k == 2){
                dp[i][k] = v[i] * v[finish] * v[i + k];
                continue;
            }
            for(int j = i + 1; j <= finish; ++j)
                dp[i][k] = min(dp[i][k], dp[i][j - i] + dp[j][finish - j + 1] + v[i] * v[j] * v[finish + 1]);
        }
    }
    fout << dp[1][n];
    return 0;
}