Cod sursa(job #3257739)

Utilizator paull122Paul Ion paull122 Data 19 noiembrie 2024 10:48:05
Problema Parantezare optima de matrici Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

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

#define INF (long long)10e16
#define NMAX 500
#define VMAX 1000000

int n;
long long dp[NMAX+1][NMAX+1];
long long a[NMAX+1];
int main()
{
    fin >> n;
    for(int i=1;i<=n+1;i++)
    {
        fin >> a[i];
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            dp[i][j]=INF;
            if(i==j)
            {
                dp[i][j]=0;
            }
        }
    }
    for(int i=1;i<=n-1;i++)
    {
        dp[i][i+1] = a[i] * a[i+1] * a[i+2];
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            for(int k=i;k<=j;k++)
            {
                dp[i][j] = min(dp[i][j],dp[i][k] + a[i] * a[k+1] * a[j+1] + dp[k+1][j]);
            }
        }
    }
    fout << dp[1][n];

}