Cod sursa(job #2297260)

Utilizator vladcoroian2001Vlad Coroian vladcoroian2001 Data 5 decembrie 2018 17:11:14
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

using namespace std;
ifstream fi("podm.in");
ofstream fo("podm.out");
const int NMAX=505,INF=1e9;
long long n,dp[NMAX][NMAX],x,y;
pair <long long,long long> M[NMAX];
int main()
{
    fi>>n;
    fi>>y;
    for(int i=2;i<=n+1;i++)
    {
        fi>>x;
        M[i-1]={y,x};
        y=x;
    }
    M[n+1].first=M[n].second;
    for(int i=1;i<=n;i++)
        dp[i][i+1]=0;
    for(int l=2;l<=n;l++)
        for(int i=1;i<=n-l+1;i++)
        {
            int j=i+l;
            dp[i][j]=INF;
            for(int mid=i+1;mid<j;mid++)
               dp[i][j]=min(dp[i][j],dp[i][mid]+dp[mid][j]+M[i].first*M[mid].first*M[j].first);
        }
    fo<<dp[1][n+1]<<"\n";
    return 0;
}