Cod sursa(job #2080343)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 2 decembrie 2017 20:18:28
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#define NMAX 501
#define oo (1ll << 40)

using namespace std;

long long d[NMAX + 1];
long long dp[NMAX][NMAX];
int n;

void read() {

    ifstream in("podm.in");
    in >> n;

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

    in.close();
}

int main() {

    read();

    for (int l = 1; l <= n - 1; l++) {

        for (int i = 1, j = i + l; i <= n - l && j <= n; i++, j++) {

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

    ofstream out("podm.out");

    out << dp[1][n] << "\n";

    out.close();
    return 0;
}