Cod sursa(job #503364)

Utilizator juniorOvidiu Rosca junior Data 22 noiembrie 2010 18:46:12
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
// 80 p

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

using namespace std;

typedef long long i64;

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

int64 Min(int st, int dr) {
  int k;
  int64 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;
}

void d_mat () {
  int l, c;

  for (l = 1; l <= n; l++) {
    for (c = 1; c <= n; c++)
      fo << setw(5) << a[l][c];
    fo << endl;
  }
  fo << endl;
}

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

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