Cod sursa(job #1108537)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 15 februarie 2014 19:40:41
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>

using namespace std;

const int Nmax = 502;

int A[Nmax];
int D[Nmax][Nmax];
int N;

void solve()
{
    for ( int i = N; i >= 1; i-- )
    {
        D[i][i] = 0;

        if ( i < N )
                D[i][i + 1] = A[i - 1] * A[i] * A[i + 1];

        for ( int j = i + 2; j <= N; ++j )
        {
            D[i][j] = 1e9;

            for ( int k = i; k < j; ++k )
            {
                D[i][j] = min( D[i][j], D[i][k] + D[k + 1][j] + A[i - 1] * A[k] * A[j] );
            }
        }
    }

    ofstream g("podm.out");

    g << D[1][N];
}

int main()
{
    ifstream cin("podm.in");

    cin >> N;

    for ( int i = 0; i <= N; ++i )
            cin >> A[i];

    solve();

    return 0;
}