Cod sursa(job #1494330)

Utilizator Vlad_317Vlad Panait Vlad_317 Data 30 septembrie 2015 22:13:11
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>

using namespace std;

const int MAX=500;
#define INF 1000000000000000LL
#define min(a, b) ((a) < (b) ? (a) : (b))

long long best[MAX+1][MAX+1],d[MAX];


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

    int n;

    scanf("%d",&n);

    for(int i=0; i<=n; i++)
        scanf("%d",&d[i]);
    for(int i=1; i<=n-1; i++)
        best[i][i+1]=d[i-1]*d[i]*d[i+1];
    for(int i=2; i<=n-1; i++)
        for(int j=1; j<=n-i; j++)
    {
        int x = i+j;
        best[j][x]=INF;
        for(int k=j;k<=x-1;k++)
                best[j][x]=min(best[j][x],best[j][k]+best[k+1][x]+d[j-1]*d[k]*d[x]);
    }

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



            return 0;
}