Cod sursa(job #1231247)

Utilizator afkidStancioiu Nicu Razvan afkid Data 20 septembrie 2014 04:01:21
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <cstdio>
#define DIMN 504
#define INF 100000000000000000LL

using namespace std;
int n; long long v[DIMN],m[DIMN][DIMN];

inline long long MIN(long long a,long long b)
{
    return ((a>b)? b : a);
}

int main()
{
    int i;
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%lld",&v[i]);
    for(i=1;i<=n;i++)
        m[i][i]=0;
    for(int l=2;l<=n;++l)
    {
        for(i=1;i<=n-l+1;++i)
        {
            int j=i+l-1;
            m[i][j]=INF;
            for(int k=i;k<=j-1;++k)
            {
                m[i][j]=MIN(m[i][j],m[i][k]+m[k+1][j]+v[i]*v[k+1]*v[j]);
            }
        }
    }
    printf("%lld\n",m[1][n]);
    return 0;
}