Cod sursa(job #3032936)

Utilizator donCiuarinArin Donciu donCiuarin Data 23 martie 2023 10:07:18
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
#define NM 505

using namespace std;

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

int n;
long long dp[NM][NM];
struct Matrice
{
    int x, y, val;
} v[NM];

int main()
{
    int i, j, d, k;
    fin >> n;
    fin >> v[1].x;
    for(i = 1; i <= n; i++)
    {
        fin >> v[i].y;
        v[i + 1].x = v[i].y;
    }

    for(i = 1; i < n; i++)
        dp[i][i + 1] += v[i].x * v[i].y * v[i + 1].y;

    for(d = 3; d <= n; d++)
        for(i = 1, j = d; j <= n; i++, j++)
        {
            dp[i][j] = INT_MAX;
            for(k = i; k < j; k++)
            {
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + (1LL * v[i].x * v[k].y * v[j].y));
            }
        }

    fout << dp[1][n];

    return 0;
}