Cod sursa(job #1251062)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 28 octombrie 2014 21:43:10
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

#define Nmax 510
#define oo (1LL << 60)

using namespace std;

int N, A[Nmax];
long long DP[Nmax][Nmax];

void Solve() {

    int i, j, k, Dif;

    for(Dif = 1; Dif < N; Dif++)
        for(i = 1; i + Dif <= N; i++) {

            j = i + Dif;
            DP[i][j] = oo;

            for(k = i; k < j; k++)
                DP[i][j] = min(DP[i][j], DP[i][k] + DP[k + 1][j] + A[i] * A[k + 1] * A[j + 1]);

        }

}
void Read() {

    ifstream in("podm.in");
    in >> N;

    for(int i = 1; i <= N + 1; i++)
        in >> A[i];

    in.close();

}
void Write() {

    ofstream out("podm.out");
    out << DP[1][N] << '\n';
    out.close();

}
int main() {

    Read();
    Solve();
    Write();

    return 0;

}