Cod sursa(job #2451568)

Utilizator uvIanisUrsu Ianis Vlad uvIanis Data 27 august 2019 11:57:03
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
#define infinity 18000000000000
using namespace std;

unsigned long long dp[501][501];

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

    size_t d[501], N;

    fin >> N;

    for(size_t i = 0; i <= N; i++)
    {
        fin >> d[i];
    }

    for(size_t i = 1; i <= N; i++)
    {
        for(size_t j = 1; j <= N; j++)
        {
            if(i != j)  dp[i][j] = infinity;
        }
    }

    for(size_t l = 1; l <= N; l++)
    {
        for(size_t i = 1; i <= N - l; i++)
        {
            size_t j = i + l;

            for(size_t k = i; k < j; k++)
            {
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + 1LL * d[i - 1] * d[k] * d[j]);
            }
        }
    }

    fout << dp[1][N];
}