Cod sursa(job #1869095)

Utilizator preda.andreiPreda Andrei preda.andrei Data 5 februarie 2017 16:21:49
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <vector>

using namespace std;

typedef long long int64;

const int64 kInfinite = (1LL << 50);

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

    int n;
    fin >> n;

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

    vector<vector<int64>> d(n, vector<int64>(n, kInfinite));
    for (int i = 0; i < n; ++i) {
        d[i][i] = 0;
    }

    for (int len = 2; len <= n; ++len) {
        for (int i = 0; i <= n - len; ++i) {
            int lim = i + len - 1;
            for (int j = i; j < lim; ++j) {
                d[i][lim] = min(d[i][lim],  d[i][j] + d[j + 1][lim] +
                                dim[i] * dim[j + 1] * dim[lim + 1]);
            }
        }
    }

    fout << d[0].back() << "\n";
    return 0;
}