Cod sursa(job #2286885)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 20 noiembrie 2018 22:13:48
Problema Parantezare optima de matrici Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>

#define MAXN 500
#define INF 1000000000000000

using namespace std;

int d[1+MAXN+5];
long long p[1+MAXN+5][1+MAXN+5];

inline int minim( long long a, long long b )
{
  if( a>b )
    a=b;

  return a;
}

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;i++ )
    p[i][i+1]=d[i-1]*d[i]*d[i+1];

  for( int j=2;j<n;j++ )
    for( int i=1;i<=n-j;i++ )
    {
      p[i][i+j]=INF;

      for( int k=i;k<i+j;k++ )
        p[i][i+j]=minim(p[i][i+j],p[i][k]+p[k+1][i+j]+1LL*d[i-1]*d[k]*d[i+j]);
    }

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

  return 0;
}