Cod sursa(job #1499671)

Utilizator BLz0rDospra Cristian BLz0r Data 10 octombrie 2015 22:55:55
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>
#include <climits>
#include <algorithm>
using namespace std;

#define Nmax 502

FILE *f = fopen ( "podm.in", "r" );
FILE *g = fopen ( "podm.out", "w" );

long long D[Nmax][Nmax], v[Nmax];
const long long inf = /*1000000000000000000;*/ LONG_LONG_MAX;

int main(){

    int N;

    fscanf ( f, "%d", &N );
    for ( int i = 0; i <= N; ++i )
        fscanf ( f, "%lld", &v[i] );

    for ( int i = 1; i < N; ++i )
        D[i][i+1] = v[i-1] * v[i] * v[i+1];

    for ( int i = 2; i < N; ++i ){
        for ( int j = 1; j <= N - i; ++j ){
            int d = i+j;
            D[j][d] = inf;
            for ( int k = j; k < d; ++k ){
                D[j][d] = min ( D[j][d], D[j][k] + D[k+1][d] + v[j-1] * v[k] * v[d] );
            }
        }
    }

    fprintf ( g, "%lld", D[1][N] );

    return 0;
}