Cod sursa(job #1996711)

Utilizator victoreVictor Popa victore Data 2 iulie 2017 14:15:15
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>

using namespace std;

const int nmax=505;
const long long inf=1e19;

long long  d[nmax][nmax],a[nmax];

inline long long min(long long p1,long long p2)
{
    if(p1>p2)
        return p2;
    return p1;
}

int main()
{
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    long long n,i,j,k;
    scanf("%lld",&n);
    for(i=0;i<=n;++i)
        scanf("%lld",&a[i]);
    for(i=1;i<n;++i)
        d[i][i+1]=a[i-1]*a[i]*a[i+1];
    for(j=2;j<n;++j)
        for(i=1;i+j<=n;++i)
        {
            d[i][i+j]=inf;
            for(k=i;k<i+j;++k)
                d[i][i+j]=min(d[i][i+j],d[i][k]+d[k+1][i+j]+a[i-1]*a[i+j]*a[k]);
        }
    printf("%lld",d[1][n]);
}