Cod sursa(job #795418)

Utilizator Sm3USmeu Rares Sm3U Data 8 octombrie 2012 18:49:03
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#define min(a, b) ((a < b) ? a : b)

using namespace std;

int n;
int d[510];
long long m[510][510];

void citire(){
    scanf ("%d", &n);
    for (int i = 0; i <= n; ++ i){
        scanf ("%d", &d[i]);
    }
}

void dinamica(){
    for (int p = 1; p <= n; ++ p){
        for (int i = 1; i <= n; ++i)
        {
            int j = p + i;
            m[i][j] =  m[i][i] + m[i + 1][j] + d[i - 1] * d[i] * d[j];
            for (int k = i + 1; k <= j; ++k){
                m[i][j] = min(m[i][j], m[i][k] + m[k + 1][j] + d[i - 1] * d[k] * d[j]);
            }
        }
    }
    printf ("%lld\n", m[1][n]);
}

int main()
{
    freopen ("podm.in", "r", stdin);
    freopen ("podm.out", "w", stdout);

    citire();
    dinamica();

    return 0;
}