Cod sursa(job #1662029)

Utilizator din99danyMatei Daniel din99dany Data 24 martie 2016 13:49:12
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
using namespace std;

#define DIM 505
#define INF (1<<23)
#define ll long long
ll a[DIM];
ll v[DIM][DIM];

ll minim( ll a, ll b ){

    if( a < b ) return a;
    else return b;

}

int main()
{

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

    ll n, i, j, s, t, d, k;

    scanf("%lld",&n);
    for( i = 1; i <= n + 1; ++i ) scanf("%lld",&a[i]);

    for( i = n - 1; i >= 1; --i ){
        for( j = i+1; j <= n; ++j ){
            v[i][j] = INF;
            for( k = i; k < j; ++k ){
                v[i][j] = minim( v[i][j], v[i][k] + v[k+1][j] + a[i]*a[j+1]*a[k+1] );
            }
        }
    }

    printf("%lld",v[1][n]);



    return 0;
}