Cod sursa(job #1135189)

Utilizator kiralalaChitoraga Dumitru kiralala Data 7 martie 2014 14:12:05
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#define INF 999999999999999999LL
#define minim(a,b) (((a)<(b))?(a):(b))
#define NMAX 505

using namespace std;

FILE* f=freopen("podm.in","r",stdin);
FILE* o=freopen("podm.out","w",stdout);

int n;
long long m[NMAX][NMAX];
int d[NMAX];

int main()
{
    scanf("%d",&n);

    for(int i=0;i<=n;++i)
    {
        scanf("%d",&d[i]);
    }

    for(int i=1;i<n;++i)
    {
        m[i][i+1]=d[i-1]*d[i]*d[i+1];
    }

    for(int x=2;x<n;++x)
    {
        for(int i=1;i+x<=n;++i)
        {
            m[i][i+x]=INF;
            for(int k=i;k<i+x;++k)
            {
                m[i][i+x]=minim(m[i][k]+m[k+1][i+x]+d[i-1]*d[k]*d[i+x],m[i][i+x]);
            }
        }
    }

    printf("%lld",m[1][n]);

    return 0;
}