Cod sursa(job #1791324)

Utilizator k.bruenDan Cojocaru k.bruen Data 29 octombrie 2016 11:36:24
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;

int n, d[505];
unsigned long long matrice[505][505];

void citire() {
    ifstream in("podm.in");

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

int main() {
    citire();

    for (int i = 1; i <= n; i++) matrice[i][i] = 0;

    for (int x = 1; x < n; x++) {
        for (int i = 2; i <= n; i++) {
            int j = i + x;

            unsigned long long Min = matrice[i][i] + matrice[i + 1][j] + d[i - 1] * d[i] * d[j];
            for (int k = i + 1; k < j; k++) {
                unsigned long long s = matrice[i][k] + matrice[k + 1][j] + d[i - 1] * d[k] * d[j];
                if (s > Min) {
                    Min = s;
                }
            }

            matrice[i][j] = Min;
        }
    }

    ofstream out("podm.out");
    out << matrice[n][n];
}