Cod sursa(job #2031145)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 2 octombrie 2017 19:30:24
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>

const int MAX_N=500;

long long v[MAX_N+1];

long long Solve[MAX_N+1][MAX_N+1];

inline long long my_min( long long a, long long b )
{
    if( a>b )
        a=b;

    return a;
}

long long solve( int st, int dr )
{
    if( Solve[st][dr]==0 )
    {
        if( st+1==dr )
        {
            Solve[st][dr]=0;
        }
        else
        {
            long long op=1LL<<62;

            for( int i=st+1;i<dr;i++ )
                op=my_min(op,v[st]*v[i]*v[dr]+solve(st,i)+solve(i,dr));

            Solve[st][dr]=op;
        }
    }

    return Solve[st][dr];
}

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

    int n;

    scanf( "%d", &n );

    for( int i=0;i<=n;i++ )
        scanf( "%lld", &v[i] );

    long long answer=solve(0,n);

    printf( "%lld", answer );

    return 0;
}