Cod sursa(job #3039761)

Utilizator toma_ariciuAriciu Toma toma_ariciu Data 28 martie 2023 20:37:16
Problema Parantezare optima de matrici Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
/// Preset de infoarena
#include <fstream>

using namespace std;

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

const int maxN = 505;
int n, dp[maxN][maxN];
pair <int, int> v[maxN];

int main()
{
    fin >> n;
    for(int i = 1; i <= n + 1; i++)
    {
        fin >> v[i].first;
        v[i - 1].second = v[i].first;
    }
    for(int d = 1; d <= n; d++)
    {
        for(int i = 1; i + d <= n; i++)
        {
            int j = i + d;
            if(d == 1)
                dp[i][j] = v[i].first * v[i].second * v[j].second;
            else
            {
                dp[i][j] = 0x3f3f3f3f;
                for(int k = i; k <= j - 1; k++)
                    dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + v[i].first * v[k].second * v[j].second);
            }
        }
    }
    fout << dp[1][n];
    return 0;
}