Cod sursa(job #1967445)

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

int main()
{
    f>>n;
    memset(m, 0x3f, sizeof(m));
    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;
}