Cod sursa(job #1128617)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 27 februarie 2014 17:53:10
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#include <algorithm>
using namespace std;

const long long INFI = 1LL * 2e18;
const int NMAX = 503;

long long D[NMAX][NMAX];
int L[NMAX];

int main () {

    freopen ("podom.in", "r", stdin);
    freopen ("podom.out", "w", stdout);
    int N, i, j, k, f;
    scanf ("%d", &N);
    for (i = 0; i <= N; ++i)
        scanf ("%d", L + i);
    for (i = 1; i < N; ++i)
        D[i][i + 1] = L[i - 1] * L[i] * L[i + 1];
    for (i = 2; i <= N; ++i) {
        for (j = 1; j <= N - i; ++j) {
            f = j + i;
            D[j][f] = INFI;
            for (k = j; k <= f; ++k)
                D[j][f] = min (D[j][f], D[j][k] + D[k + 1][f] + L[j - 1] * L[k] * L[f]);
        }
    }
    printf ("%lld", D[1][N]);

}