Cod sursa(job #1905680)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 6 martie 2017 10:14:25
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <cstdio>
#define Nmax 501
#define LL long long
using namespace std;

ofstream g("podm.out");


LL n,d[Nmax],mat[Nmax][Nmax];
int main()
{
    freopen("podm.in","r",stdin);
    scanf("%lld",&n);
    for (int i=0;i<=n;i++)
        scanf("%lld",&d[i]);

    for(int i=1;i<=n;i++)
    {
        for (int j=1;j<=n-i;j++)
        {
            for (int k=j;k<i+j;k++)
            {
                LL prod;
                prod = d[j-1] * d[k] * d[i+j];
                if (mat[j][i+j]==0 || mat[j][i+j]>mat[j][k] + mat[k+1][i+j] + prod)
                    mat[j][i+j] = mat[j][k] + mat[k+1][i+j] + prod;
            }
        }
    }

    g<<mat[1][n];

    return 0;
}