Cod sursa(job #2838868)

Utilizator florinrafiliuRafiliu Florin florinrafiliu Data 24 ianuarie 2022 20:17:26
Problema Parantezare optima de matrici Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const long long INF = 1e17;
const int maxN = 505;

long long dp[maxN][maxN];
long long d[maxN];

int main() {

    int n; fin >> n;
    for(int i = 0; i <= n; ++i)
        fin >> d[i];

    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= n; ++j)
            dp[i][j] = INF;

    for(int i = 1; i <= n; ++i)
        dp[i][i] = 0;

    for(int i = 1; i < n; ++i)
        dp[i][i+1] = d[i-1] * d[i] * d[i+1];

    for(int i = 1; i <= n-2; ++i)
        for(int j = i+2; j <= n; ++j)
            for(int k = i; k < j; ++k)
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j]
                                        + d[i-1] * d[k] * d[j]);

    fout << dp[1][n];

    return 0;
}