Cod sursa(job #2344140)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 14 februarie 2019 19:57:35
Problema Parantezare optima de matrici Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX = 505;
const int INF = (1<<29);
int v[NMAX];
int dp[NMAX][NMAX];

int main()
{
    int n;
    fin >> n;
    for(int i=0;i<=n;i++)
    {
        fin >> v[i];
    }
    for(int i=1;i<=n;i++) dp[i][i+1]=v[i-1]*v[i]*v[i+1];
    for(int lg=2;lg<n;lg++)
    {
        for(int i=1;i<=n-lg;i++)
        {
            dp[i][i+lg]=INF;
            for(int j=i;j<i+lg;j++)
            {
                int val=dp[i][j]+dp[j+1][i+lg]+v[i-1]*v[j]*v[i+lg];
                if(val<dp[i][i+lg]) dp[i][i+lg]=val;
            }
        }
    }
    fout << dp[1][n];
    return 0;
}