Cod sursa(job #2795371)

Utilizator rARES_4Popa Rares rARES_4 Data 6 noiembrie 2021 11:55:30
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("podm.in");
ofstream g ("podm.out");
long long n;
long long dim[502],dp[502][502];
int main()
{
    f >> n;
    for(long long i = 1; i<=n+1; i++)
        f >> dim[i];
    long long dif = 1,i,j;
    /* folosim doar jumate de matrice
    pe care o umplem paralel cu diagonala principala
    iar i si j vor reprezenta matricile intre care vrem sa punem paranteza iar k locul in care punem paranteza
    (i......)(x..........j)
    */
    while(dif<=n-1)
    {
        i = 1;
        j = i+dif;
        while(j<=n)
        {
            for(long long k = i; k<=j-1; k++)
            {
                if(dp[i][j]==0)
                {
                    dp[i][j] = dp[i][k] + dp[k+1][j] + (dim[k+1]*dim[i]*dim[j+1]);
                }
                else
                {
                    dp[i][j] = min(dp[i][j],dp[i][k] + dp[k+1][j] + (dim[k+1]*dim[i]*dim[j+1]));
                }
            }
            i++;
            j++;
        }
        dif++;
    }
    g<<dp[1][n];
}