Cod sursa(job #1325560)

Utilizator c0rn1Goran Cornel c0rn1 Data 24 ianuarie 2015 08:41:47
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#define NMAX 505
#define inf 0x3f3f3f3f

using namespace std;

int d[NMAX], n;
long long int best[NMAX][NMAX];

void read()
{
   scanf("%d\n", &n);
   for (int i=0; i<=n; i++)
      scanf("%d ", &d[i]);
}

void dyn()
{
   for (int p=2; p<=n; p++){
      for (int i=1; i<=n-p+1; i++){
         int j = i + p - 1;
         best[i][j] = inf;
         for (int k=i; k<j; k++){
            best[i][j] = min(best[i][j], best[i][k] + best[k+1][j] + 1LL*d[i-1]*d[k]*d[j]);
         }
      }
   }

   printf("%d\n", best[1][n]);
}

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

   return 0;
}