Cod sursa(job #1967448)

Utilizator bt.panteaPantea Beniamin bt.pantea Data 16 aprilie 2017 17:45:19
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define ull unsigned long long
#define NMAX 505
using namespace std;
ifstream f ("podm.in");
ofstream g ("podm.out");
ull n, D[NMAX], m[NMAX][NMAX];
inline ull min(const ull & a, const ull & b) {
    if (a < b) return a;
    return b;
}

int main()
{
    f>>n;
    memset(m, 0xffffffff, sizeof(m));
    cout<<m[0][0];
    for (int i = 0; i <= n; i++) {
        f>>D[i];
        m[i][i] = 0;
    }
    for (int i = 1; i <= n; i++)
        m[i][i + 1] = D[i - 1] * D[i] * D[i + 1];
    for (int d = 2; d <= n; d++)
        for (int i = 1; i + d <= n; i++)
            for (int k = 0; k < d; k++)
                m[i][i + d] = min(m[i][i + d], m[i][i + k] + m[i + k + 1][i + d] + D[i - 1] * D[i + k] * D[i + d]);
    g<<m[1][n];
    return 0;
}