Cod sursa(job #2015278)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 25 august 2017 16:42:04
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#define VAL 505
#define INF 1000000000000000000

using namespace std;

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

int N, i, j, k;
int v[VAL], d;
long long dp[VAL][VAL], mn;

int main()
{
    fin >> N;
    for (i=0; i<=N; i++)
      fin >> v[i];
    for (d=0; d<N; d++)
    {
        for (i=1; i<=N-d; i++)
        {
            if (d==0)
              dp[i][i]=0;
            if (d==1)
              dp[i][i+1]=1LL*v[i-1]*v[i]*v[i+1];
            if (d>1)
            {
                mn=INF;
                j=i+d;
                for (k=i; k<j; k++)
                  mn=min(mn, dp[i][k]+dp[k+1][j]+1LL*v[i-1]*v[k]*v[j]);
                dp[i][j]=mn;
            }
        }
    }
    fout << dp[1][N] << '\n';
    fin.close();
    fout.close();
    return 0;
}