Cod sursa(job #2267734)

Utilizator papinub2Papa Valentin papinub2 Data 23 octombrie 2018 22:44:24
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <vector>

using namespace std;

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

int main()
{
    int n;
    in >> n;

    vector<long long> v(n + 2);
    vector<vector<long long> > dp(n + 1, vector<long long>(n + 1));

    for (int i = 1; i <= n + 1; i++)
        in >> v[i];

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

        for (int k = i; k < i + j; k++)
            dp[i][i + j] = min(dp[i][i + j], dp[i][k] + dp[k + 1][i + j] + v[i] * v[k + 1] * v[i + j + 1]);
    }

    out << dp[1][n];
    return 0;
}