Cod sursa(job #594466)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 7 iunie 2011 19:25:16
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

const long Infinit=2000000005;
long D[505], POM[505][505], N;

void Read ()
{
    ifstream fin ("pomd.in");
    long i;
    fin >> N;
    for (i=0; i<=N; ++i)
    {
        fin >> D[i];
    }
    fin.close ();
}

void Type ()
{
    ofstream fout ("pomd.out");
    fout << POM[1][N] << "\n";
    fout.close ();
}

inline long Min (long a, long b)
{
    if (a<b)
    {
        return a;
    }
    return b;
}

int main()
{
    long d, i, j, k, Best;
    Read ();
    for (d=2; d<=N; d++)
    {
        for (i=1; i<=N; i++)
        {
            j=i+d-1;
            Best=Infinit;
            for (k=i; k<j; k++)
            {
                Best=Min (Best, POM[i][k]+POM[k+1][j]+D[i-1]*D[k]*D[j]);
            }
            POM[i][j]=Best;
        }
    }
    Type ();
    return 0;
}