Cod sursa(job #2477268)

Utilizator AlexBolfaAlex Bolfa AlexBolfa Data 19 octombrie 2019 21:49:53
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
const int NMAX=504;

long long n,v[NMAX];
long long dp[NMAX][NMAX];

long long solve(int, int);

int main(){
    fin>>n;
    ++n;
    for(int i=1;i<=n;++i)
        fin>>v[i];
    fout<<solve(1,n);
    return 0;
}
long long solve(int l, int r){
    if(r-l==1)
        return 0;
    if(dp[l][r])
        return dp[l][r];
    if(r-l==2)
        return v[l]*v[l+1]*v[r];

    dp[l][r]=1e18;

    for(int i=l+1;i<r;++i){
        dp[l][r]=min(dp[l][r], solve(l,i) + solve(i,r) + v[l]*v[i]*v[r]);
    }

    return dp[l][r];
}