Cod sursa(job #3180688)

Utilizator RobertAcAcatrinei Robert-Marian RobertAc Data 5 decembrie 2023 19:17:58
Problema Parantezare optima de matrici Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
#ifdef LOCAL
#define in cin
#define out cout
#endif
#define int int64_t
using namespace std;

#ifndef LOCAL
ifstream in("podm.in");
ofstream out("podm.out");
#endif

const int nmax = 505;

int dp[nmax][nmax];
pair<int,int> v[nmax];

int32_t main()
{
    int n;in>>n;
    int a,b;in>>b;
    for(int i=1;i<=n;i++)
    {
        a=b;
        in>>b;
        v[i]={a,b};
    }
    for(int i=1;i<n;i++)//marimea
    {
        for(int j=1;j+i<=n;j++)
        {
            dp[j][j+i]=2e9;
            for(int k=j;k<j+i;k++)
            {
                //cerr<<j<<' '<<j+i<<'\n';
                //cerr<<j<<' '<<k<<' '<<k+1<<' '<<j+i<<'\n';
                dp[j][j+i]=min(dp[j][j+i],dp[j][k]+dp[k+1][j+i]+(v[j].first*v[k+1].first*v[j+i].second));
            }
        }
    }
    cout<<dp[1][n];
}