Cod sursa(job #2297261)

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

using namespace std;
ifstream fi("podm.in");
ofstream fo("podm.out");
const long long NMAX=505,INF=(1LL<<60);
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;
}