Cod sursa(job #2344146)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 14 februarie 2019 20:02:03
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX = 505;
const long long INF = (1LL<<60);
int v[NMAX];
long long 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]=1LL*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++)
            {
                long long val=dp[i][j]+dp[j+1][i+lg]+1LL*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;
}