Cod sursa(job #2662505)

Utilizator Mirela_MagdalenaCatrina Mirela Mirela_Magdalena Data 24 octombrie 2020 10:48:38
Problema Parantezare optima de matrici Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#define NMAX 505
#include <fstream>
#include <climits>
#include <algorithm>
using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

int n, d[NMAX];
long long dp[NMAX][NMAX];


void read()
{
    f>>n;
    for(int i = 0; i <= n; ++i)
        f>>d[i];
}

void pd()
{
    for(int d_p= 0; d_p <= n-1; ++d_p)
    {
        for(int i = 1; i <= n; ++i)
        {
            int j = i + d_p;
            long long vmin = LLONG_MAX;

            for(int k = i; k <= j-1; ++k)
                vmin = min(vmin, dp[i][k] + dp[k+1][j] + 1LL*d[i-1]*d[k]*d[j]);
            if(vmin == LLONG_MAX)
                vmin = 0;
            dp[i][j] = vmin;

        }
    }
    g<<dp[1][n];
}


int main()
{
    read();
    pd();
    return 0;
}