Cod sursa(job #1277543)

Utilizator Burbon13Burbon13 Burbon13 Data 27 noiembrie 2014 20:10:01
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <cstdio>
#include <climits>
#define n_max 505

using namespace std;

long long mat[n_max][n_max] ;
int 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( "%d" , &n ) ;
    for ( int i = 0 ; i <= n ; i ++ )
        scanf( "%d" , &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 ++ ;
        }
    }
}