Cod sursa(job #969617)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 4 iulie 2013 20:14:34
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#define oo 1<<30
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
int N,D[503],M[503][503];
void Read()
{
    int i;
    f>>N;
    for(i=0;i<=N;i++)
        f>>D[i];
}
void Solve()
{
    int i,j,k,step;
    for(i=1;i<=N-1;i++)
        M[i][i+1]=D[i-1]*D[i]*D[i+1];
    for(step=2;step<N;step++)
        {
        for(i=1;i<=N-step;i++)
            {
            j=i+step;
            M[i][j]=oo;
            for(k=i;k<j;k++)
                M[i][j]=min(M[i][j],M[i][k]+M[k+1][j]+D[i-1]*D[k]*D[j]);
            }
        }
}
void Print()
{
g<<M[1][N]<<'\n';
}
int main()
{
    Read();
    Solve();
    Print();
    return 0;
}