Cod sursa(job #3347004)

Utilizator alexkAlexandru Kelemen alexk Data 15 martie 2026 14:28:45
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <vector>
#include <climits>
using namespace std;
ifstream cin("podm.in");
ofstream cout("podm.out");
#define oo LONG_LONG_MAX;
const int nmax=500;
int n;
vector<pair<int,int>> v(nmax+5);
long long int dp[nmax+5][nmax+5];
int main()
{
    cin>>n;
    cin>>v[1].first>>v[1].second;
    for(int i=3;i<=n+1;i++)
    {
        cin>>v[i-1].second;
        v[i-1].first=v[i-2].second;
    }
    for(int len=2;len<=n;len++)
    {
        for(int i=1;i<=n-len+1;i++)
        {
            int j=i+len-1;
            dp[i][j]=oo;
            for(int k=i;k<j;k++)
            {
                long long int cost=1LL*(v[i].first)*(v[k].second)*(v[j].second);
                dp[i][j]=min(dp[i][j], dp[i][k]+dp[k+1][j]+cost);
            }
        }
    }
    cout<<dp[1][n];
    return 0;
}