Cod sursa(job #1920183)

Utilizator caprariuapCaprariu Alin-Paul caprariuap Data 9 martie 2017 22:51:14
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <cstring>
#include <vector>
#include <algorithm>

using namespace std;

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

long long dp[510][510],d[510];
int n,nr,m,i,j,k;

int main()
{
    fin >> n;
    for (i=1; i<=n+1; i++)
        fin >> d[i];
    for (i=1; i<n; i++)
        dp[i][i+1]=d[i]*d[i+1]*d[i+2];
    nr=2;
    while (nr<n)
    {
        for (i=1; i+nr<=n; i++)
        {
            j=i+nr;
            for (k=i; k<=j; k++)
                if (dp[i][j]==0||(dp[i][k]+dp[k+1][j]+d[i]*d[j+1]*d[k+1]<dp[i][j]))
                    dp[i][j]=dp[i][k]+dp[k+1][j]+d[i]*d[j+1]*d[k+1];
        }
        nr++;
    }
    fout << dp[1][n] << '\n';
}