Cod sursa(job #690083)

Utilizator DumitracheIulianDumitrache Iulian DumitracheIulian Data 25 februarie 2012 10:27:53
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in ("podm.in");
ofstream out("podm.out");
long long const N=505;
long long const INF=1<<30;
long long d[N],opr[N][N];
long long n;

void citesc ()
{
    in>>n;
    for(long long i=1;i<=n+1;i++)
        in>>d[i];
    in.close();
}
long long minim (long long a, long long b)
{
    if(a<b)
        return a;
    return b;
}
void construiesc ()
{
    for(long long i=n-1;i>0;i--)
        for(long long j=i+1;j<=n;j++)
        {
            opr[i][j]=INF;
            for(long long k=i;k<j;k++)
                opr[i][j]=minim(opr[i][j],opr[i][k]+opr[k+1][j]+d[i]*d[k+1]*d[j+1]);
        }
}
/*void afis()
{
    for(long long i=1;i<=n;i++)
    {
        for(long long j=1;j<=n;j++)
            cout<<opr[i][j]<<"\t";
        cout<<"\n";
    }
}*/
int main()
{
    citesc ();
    construiesc ();
    //afis();
    out<<opr[1][n]<<"\n";
    return 0;
}