Cod sursa(job #1830802)

Utilizator RaduToporanRadu Toporan RaduToporan Data 17 decembrie 2016 10:17:06
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>

long long n,i,j,k,col,d[505],a[505][505];

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

    for (col=3; col<=n; col++)
    {
        i=1;
        j=col;
        while (j<=n)
        {
            a[i][j]=2000000000;
            for (k=i; k<j; k++)
                if (a[i][k]+a[k+1][j]+d[i]*d[k+1]*d[j+1]<a[i][j])
            {
                a[i][j]=a[i][k]+a[k+1][j]+d[i]*d[k+1]*d[j+1];
                a[j][i]=k;
            }
            i++;
            j++;
        }
    }
    printf("%lld\n",a[1][n]);
    return 0;
}