Cod sursa(job #1414074)

Utilizator Burbon13Burbon13 Burbon13 Data 2 aprilie 2015 12:29:22
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <cstdio>
#include <climits>
#define n_max 505

using namespace std;

long long mat[n_max][n_max] ;
long long d[n_max] , n ;

void citire() ;
void compl_mat() ;

int main()
{
    freopen( "podm.in" , "r" , stdin ) ;
    freopen( "podm.out" , "w" , stdout ) ;
    citire() ;
    compl_mat() ;
    printf(  "%lld\n" , mat[1][n] ) ;
    return 0;
}

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

void compl_mat()
{
    for ( int q = 2 ; q <= n ; q ++ )
    {
        int i = 1 , j = q ;
        while ( j <= n && i < n )
        {
            long long min = (1LL<<62) ;
            for ( int k = i ; k < j ; k ++ )
                if ( min > ( mat[i][k] + mat[k+1][j] + ( d[i-1]*d[k]*d[j] ) ) )
                    min = mat[i][k] + mat[k+1][j] + ( d[i-1]*d[k]*d[j] ) ;
            mat[i][j] = min ;
            i ++ ;
            j ++ ;
        }
    }
}