Cod sursa(job #1513782)

Utilizator TheNechizFMI Razvan Birisan TheNechiz Data 29 octombrie 2015 22:48:49
Problema Parantezare optima de matrici Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.95 kb
# include <stdio.h>
# include <limits.h>
# define MAXN  501
# define MAXIM  LLONG_MAX
# define InFile "podm.in"
# define OutFile "podm.out"

long long m[MAXN][MAXN], d[MAXN],x;

int main()
{
    freopen(InFile,"r",stdin);
    freopen(OutFile,"w",stdout);

    int n,i,j,w,k;
    scanf("%d",&n);
    for( i = 0 ; i <= n ; ++i )
        scanf("%I64d",d+i);

    for( i = 1 ; i <= n ; ++i )
    {
        m[i][i] = 0;
        if( i <= n-1 )
            m[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
    }
    for( w = 2 ; w <= n-1 ; ++w )
        for( i = 1 ; i <= n-w ; ++i )
        {
            j = i + w;
            m[i][j] = MAXIM;
            for( k = i ; k <= j-1 ; ++k )
            {
                x = m[i][k] + m[k + 1][j] + d[i - 1] * d[k] * d[j];
                if( x < m[i][j] )
                    m[i][j] = x;
            }
        }
    printf("%I64d",m[1][n]);

    fclose(stdin);
    fclose(stdout);
    return 0;
}