Cod sursa(job #587114)

Utilizator drywaterLazar Vlad drywater Data 3 mai 2011 22:14:29
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>
long long d[510],n,i,m[501][501],j,k;
int main(void)
{
    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++)
    {
        m[i][i]=0;
        m[i][i+1]=d[i]*d[i+1]*d[i+2];
    }
    for (j=2;j<=n;j++)
    {
        for (i=1;i+j<=n;i++)
        {
            m[i][i+j]=100000000000000000LL;
            for (k=i;k<i+j;k++)
                if (m[i][i+j]>m[i][k]+m[k+1][i+j]+d[i]*d[k+1]*d[i+j+1])
                    m[i][i+j]=m[i][k]+m[k+1][i+j]+d[i]*d[k+1]*d[i+j+1];
        }
    }
    printf("%lld\n",m[1][n]);
    return 0;
}