Cod sursa(job #2414616)

Utilizator mihneacazCazacu Mihnea mihneacaz Data 24 aprilie 2019 20:15:17
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream>
#include<algorithm>

const int NMAX=505;
using namespace std;

ifstream cin("podm.in");
ofstream cout("podm.out");

long long dp[NMAX][NMAX];
long long v[NMAX];

int main()
{
    int n;
    cin>>n;
    for(int i=0; i<=n; ++i)
        cin>>v[i];
    for(int i=1; i<n; ++i)
        dp[i][i+1]=v[i-1]*v[i]*v[i+1];
    for(int len=2; len<n; ++len){
        for(int i=1; i<=n-len; ++i){
            dp[i][i+len]=dp[i][i+len-1]+v[i-1]*v[i+len-1]*v[i+len];
            for(int rup=i; rup<i+len; ++rup)
                dp[i][i+len]=min(dp[i][i+len],dp[i][rup]+dp[rup+1][i+len]+v[i-1]*v[rup]*v[i+len]);
        }
    }
    cout<<dp[1][n]<<'\n';
    return 0;
}