Cod sursa(job #1024495)

Utilizator macajouMaca George macajou Data 8 noiembrie 2013 19:09:03
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <algorithm>
#define inf 1<<30

using namespace std;

unsigned long long a[501][501],d[505];
int n;

void citire()
{
    int i;
    scanf("%d",&n);
    for(i=0;i<=n;i++)
        scanf("%d",&d[i]);
    for(i=1;i<=n;i++)
        {
            a[i][i]=0;
            a[i][i+1]=d[i-1]*d[i]*d[i+1];
        }
}

void par()
{
    int i,k,dg;
    for(dg=2;dg<n;dg++)
        for(i=1;i<=n-dg;i++)
            {
                a[i][i+dg]=inf;
                for(k=i;k<i+dg;k++)
                    a[i][i+dg]=min(a[i][i+dg],a[i][k]+a[k+1][i+dg]+d[i-1]*d[k]*d[i+dg]);
            }
}

int main()
{
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);

    citire();
    par();
    printf("%d",a[1][n]);

    return 0;
}