Cod sursa(job #1767250)

Utilizator preda.andreiPreda Andrei preda.andrei Data 28 septembrie 2016 20:57:59
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>

using namespace std;

typedef long long lint;

const int kInfinit = (1 << 30);

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

    int n;
    fin >> n;

    vector<int> dim(n + 1);
    vector<vector<lint>> prod(n + 1, vector<lint>(n + 1, kInfinit));
    for (int i = 0; i <= n; ++i) {
        fin >> dim[i];
        prod[i][i] = 0;
    }

    for (int l = 1; l < n; ++l) {
        for (int i = 1; i <= n - l; ++i) {
            for (int k = i; k < i + l; ++k) {
                lint cost_nou = prod[i][k] + prod[k + 1][i + l] + 1LL * dim[i - 1] * dim[k] * dim[i + l];
                prod[i][i + l] = min(prod[i][i + l], cost_nou);
            }
        }
    }

    fout << prod[1][n] << "\n";
    return 0;
}