Cod sursa(job #2142165)

Utilizator FredyLup Lucia Fredy Data 24 februarie 2018 19:57:13
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;

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

#define inf 100000000000000000LL
#define lim 510
long long n,i,dif,j,k;
long long d[lim], dp[lim][lim];

int main()
{
    fin>>n;
    for (i=0; i<=n; i++)  fin>>d[i];
    for (i=1; i<n; i++)    dp[i][i+1] = d[i-1]*d[i]*d[i+1];

    for (dif=2; dif<n; dif++)
        for (i=1; i<=n-dif; i++)
        {
            j = i+dif;
            dp[i][j]=inf;
            for (k=i; k<j; k++)
                dp[i][j] = min (dp[i][j], dp[i][k] + dp[k+1][j] + d[i-1]*d[k]*d[j]);
        }
    fout<<dp[1][n];

    fout.close();
    return 0;
}