Cod sursa(job #1504087)

Utilizator mariakKapros Maria mariak Data 17 octombrie 2015 12:11:21
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <algorithm>
#define Dim 502
#define For(i, a, b)  for (int i = (a); i <= (b); ++ i)
#define INF 100000000000000000L

using namespace std;
typedef long long Ll;
Ll bst[Dim][Dim], d[Dim];
int n;
int main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);
    scanf("%d", &n);
    For(i, 0, n) scanf("%d", &d[i]);

    For(i, 1, n) bst[i][i] = 0;
    For(i, 1, n - 1) bst[i][i + 1] = d[i - 1] * d[i] * d[i + 1];

    For(w, 2, n - 1)
    For(i, 1, n - w)
    {
        int j = i + w;
        bst[i][j] = INF;
        For(k, i, j - 1)
        bst[i][j] = min(bst[i][j],
            bst[i][k] + bst[k + 1][j] + d[i - 1] * d[k] * d[j]);

    }
    printf("%d\n", bst[1][n]);
    return 0;
}