Cod sursa(job #3180686)

Utilizator xXoctavianXxStanescu Matei Octavian xXoctavianXx Data 5 decembrie 2023 19:13:23
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
#define int long long

using namespace std;

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

const int nmax = 505;
const int inf = 1ll * 1e9 * 1e9;
int n;
int dp[nmax][nmax];
pair<int,int> v[nmax];

int combine(int i, int k, int j)
{
    pair<int,int> a = {v[i].first,v[k].second};
    pair<int,int> b = {v[k+1].first,v[j].second};
    return a.first * a.second * b.second;
}

signed main()
{
    fin>>n;
    fin>>v[1].first;
    for(int i=1; i<=n; i++)
    {
        int a; fin>>a;
        v[i].second = a;
        v[i+1].first = a;
    }
    for(int l = 2; l<=n; l++)
    {
        for(int i=1; i+l-1<=n; i++)
        {
            int j = i+l-1;
            dp[i][j] = inf;
            for(int k = i; k<j; k++)
            {
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + combine(i,k,j));
            }
        }
    }
    fout<<dp[1][n];
    return 0;
}