Cod sursa(job #3364381)

Utilizator MirunaFlorMiruna Floruti MirunaFlor Data 2 septembrie 2026 13:37:34
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
using namespace std;
ifstream fin ("podm.in");
ofstream fout ("podm.out");
const long long inf = 1LL << 60;
long long n, d[505], dp[505][505];

int main()
{
    fin >> n;
    for (int i = 0; i<= n; i++)
    fin >> d[i];
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            dp[i][j] = inf;
    for (int i = 1; i <= n; i++)
        dp[i][i] = 0;
    for (int i = 1; i<= n-1; i++)
        dp[i][i+1] = d[i-1]*d[i]*d[i+1];
    for (int len = 3; len <= n; len++)
        for (int i = 1; i+len-1 <= n; i++){
            int j = i + len - 1;
            for (int k = i; k <= j-1; k++)
                dp[i][j] = min(dp[i][j], dp[i][k]+dp[k+1][j] + d[i-1]*d[k]*d[j]);
        }
    fout << dp[1][n];
    return 0;
}