Cod sursa(job #1678261)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 7 aprilie 2016 10:09:51
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#define N 502

using namespace std;

long long d[N][N],v[N];

int main(){
    int i,n,len,j,k;

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

    scanf("%d",&n);

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


    for(i=1;i<=n;i++){
        d[i][i]=0;
    }

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

    for(len=2;len<n;len++){
        for(i=1; i+len<=n;i++){
            j=i+len;
            d[i][j]=LLONG_MAX;
            for(k=i;k<j;k++){
                d[i][j]=min(d[i][j], d[i][k]+d[k+1][j]+v[i-1]*v[k]*v[j]);
            }
        }
    }

    printf("%lld",d[1][n]);
    return 0;
}