Cod sursa(job #2680888)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 4 decembrie 2020 16:39:58
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#define INF 1e18 + 1
#define MAX 500
using namespace std;
ifstream cin( "podm.in" );
ofstream cout( "podm.out" );
long long dp[ MAX + 1 ][ MAX + 1 ];
int v[ MAX + 1 ];

int main()
{
    int n, l, c, k, x, i, j;
    cin >> n;
    for( i = 0; i <= n; i++ )
        cin >> v[ i ];
    for( x = 2; x <= n; x++ ){
        i = 1;
        for( j = x; j <= n; j++ ){
            dp[ i ][ j ] = INF;
            for( k = i; k < j; k++ ){
                long long cat = dp[ i ][ k ] + dp[ k + 1 ][ j ] + ( long long )v[ i - 1 ] * v[ k ] * v[ j ];
                if( cat < dp[ i ][ j ] )
                    dp[ i ][ j ] = cat;
            }
            ++i;
        }
    }
    cout << dp[ 1 ][ n ] << '\n';
    return 0;
}