Cod sursa(job #1388911)

Utilizator tudoras8tudoras8 tudoras8 Data 15 martie 2015 20:04:38
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;

int main() {
    const int MAXN = 511;
    const unsigned long long INF = ~0;

    int n, d[MAXN];
    unsigned long long m[MAXN][MAXN];

    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);

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

    for (int i = 1; i <= n; i++) {
        m[i][i] = 0;
        m[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
    }

    unsigned long long p, q;
    for (int l = 2; l <= n - 1; l++) {
        for (int i = 1; i <= n - l; i++) {
            int j = i + l;
            m[i][j] = INF;
            for (int k = i; k <= j - 1; k++) {
                m[i][j] = min(m[i][j], m[i][k] + m[k + 1][j] + d[i - 1] * d[k] * d[j]);
            }
        }
    }
    cout << m[1][n];

    return 0;
}