Cod sursa(job #369828)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 29 noiembrie 2009 17:22:36
Problema Parantezare optima de matrici Scor 90
Compilator c Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#define NMAX 512
#define INF 99999999999999999LL
int N;
long long T[NMAX][NMAX],d[NMAX];
int main()
{
    int i,j,k;
    long long min,ret;
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    scanf("%d",&N);
    for (i=0;i<=N;++i) 
    {
        scanf("%d",&k);
        d[i]=k;
    }
    for (i=N-1;i;--i)
    {
        T[i][i+1]=d[i-1]*d[i]*d[i+1];
        for (j=i+2;j<=N;++j)
        {
            min=INF;
            for (k=i;k<j;++k)
            {
                ret=T[i][k]+T[k+1][j]+d[i-1]*d[k]*d[j];
                if (ret<min) min=ret;
            }
            T[i][j]=min;
        }
    }
    printf("%lld",T[1][N]);
    return 0;
}