Cod sursa(job #823956)

Utilizator ericptsStavarache Petru Eric ericpts Data 25 noiembrie 2012 19:17:25
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>
#include <algorithm>
using namespace std;

long long int inm[501][501];
short int d[501];

long long int best(int a,int b)
{
    if(inm[a][b] || a== b)
        return inm[a][b];
    int k;
    inm[a][b] = 1LL << 62;
    const long long vec = d[a-1] * d[b];
    for(k=a;k<b;++k)
        inm[a][b] = min(inm[a][b],best(a,k) + best(k+1,b) +  vec * d[k]);
    return inm[a][b];
}

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