Cod sursa(job #1001615)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 25 septembrie 2013 18:06:43
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

#define lint long long int

lint minim(lint a,ilnt b)
{
    if(a<b)
        return a;
    return b;
}

#define inf 500000000000000ll

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

    lint d[505],din[505][505],n;
    lint x[505];
    lint y[505];
    cin>>n;

    int i;
    for(i=0;i<=n;i++)
    {
        cin>>d[i];
        y[i]=d[i];
        x[i+1]=d[i];
    }

    int j,k,p;
    for(k=1;k<=(n-1);k++)
    {
        for(i=1;(i+k)<=n;i++)
        {
           din[i][i+k]=inf;
           for(p=i;p<(i+k);p++)
              din[i][i+k]=minim(din[i][i+k],din[i][p]+din[p+1][i+k]+x[i]*x[p+1]*y[i+k]);
        }
    }
    cout<<din[1][n]<<'\n';
    cin.close();
    cout.close();
    return 0;
}