Cod sursa(job #641419)

Utilizator juniorOvidiu Rosca junior Data 28 noiembrie 2011 12:00:23
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
// 100 p

#include <fstream>
#include <cstdlib>
#include <iomanip>

using namespace std;

long long i64;

ifstream fi("podm.in");
ofstream fo("podm.out");
int n;
long long x[502];
long long a[501][501];

long long Min(int st, int dr) {
  int k;
  long long vmin, aux;

  vmin = 1LL << 60;
  for (k = st; k <= dr - 1; k++) {
    aux = a[st][k] + a[k+1][dr] + x[st] * x[k+1] * x[dr+1];
    if (aux < vmin)
      vmin = aux;
  }
  return vmin;
}

int main() {
  int l, d, i;

  fi >> n;
  for (i = 1; i <= n + 1; i++)
    fi >> x[i];
  for (d = 1; d <= n - 1; d++)
    for (l = 1; l <= n - d; l++)
      a[l][l+d] = Min(l, l + d);
  fo << a[1][n];
  return 0;
}