Cod sursa(job #2960504)

Utilizator alexandrupopaericalexandru eric alexandrupopaeric Data 4 ianuarie 2023 15:27:28
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

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

long long n,v[505],dp[505][505];

int main()
{
    in>>n;
    for(int i = 1;i<=n+1;i++)
    {
        in>>v[i];
    }
   // for(int i = 1;i<=n;i++)
   //     out<<v1[i]<<" "<<v2[i]<<"\n";
    for(int i = 1;i<=n-1;i++)
    {
        dp[i][i+1] = v[i]*v[i+1]*v[i+2];
    }
    for(int dif = 2;dif<=n;dif++)
    {
        for(int i = 1;i<=n-dif;i++)
        {
            long long minim = 1e18;
            for(int k = i;k < i+dif;k++)
                minim = min(minim, dp[i][k] + dp[k+1][i+dif] + v[i]*v[i+dif+1]*v[k+1]);
            dp[i][i+dif] = minim;
        }
    }
  /*  for(int i = 1;i<=n;i++)
    {
        for(int j = 1;j<=n;j++)
            out<<dp[i][j]<<" ";
        out<<"\n";
    }*/
    out<<dp[1][n];

    return 0;
}