Cod sursa(job #1023395)

Utilizator Raba_SebastianRaba Sebastian Stefan Raba_Sebastian Data 6 noiembrie 2013 21:28:41
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>

#define NMAX 505
#define INF (1LL<<62)
#define min(a,b) ((a)<(b)?(a):(b))

using namespace std;

ifstream fin ( "podm.in" );
ofstream fout ( "podm.out" );

long long d[NMAX],DP[NMAX][NMAX];
int N ;

int main ()
{
    int i,diff,k,j ;
    fin>>N ;
    for(i=0;i<=N;++i )
        fin >> d[i] ;
    for(i=1;i<N;++i)
        DP[i][i+1] = d[i-1]*d[i]*d[i+1];

    for(diff=2;diff<=N-1;++diff)
        for (i=1;i<=N-diff;++i )
        {
            j=i + diff ;
            DP[i][j]=INF ;
            for (k=i;k<j;++k )
                DP[i][j]=min(DP[i][j],DP[i][k]+DP[k+1][j]+d[i-1]*d[k]*d[j]);
        }
    fout<<DP[1][N]<< "\n";
    return 0 ;
}