Cod sursa(job #2014161)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 23 august 2017 00:08:59
Problema Parantezare optima de matrici Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 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], l;
long long dp[VAL][VAL], mn;

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