Cod sursa(job #2547797)

Utilizator Tudor06MusatTudor Tudor06 Data 15 februarie 2020 18:09:40
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>

using namespace std;

const int NMAX = 500;
const long long INF = ( ( 1LL << 62 ) - 1 ) * 2 + 1;
long long dp[NMAX + 1][NMAX + 1];
long long v[NMAX + 1];

int main() {
    ifstream fin( "podm.in" );
    ofstream fout( "podm.out" );
    int n, i, l, c;
    fin >> n;
    n ++;
    for ( i = 1; i <= n; i ++ )
        fin >> v[i];
    for ( l = 3; l <= n; l ++ ) {
        for ( c = 1; c <= n - l + 1; c ++ ) {
            dp[c][l + c - 1] = INF;
            for ( i = c + 1; i < l + c - 1; i ++ )
                dp[c][l + c - 1] = min( dp[c][l + c - 1], dp[c][i] + dp[i][l + c - 1] + v[c] * v[i] * v[c + l - 1] );
        }
    }
    fout << dp[1][n];
    return 0;
}