Cod sursa(job #870676)

Utilizator GagosGagos Radu Vasile Gagos Data 3 februarie 2013 20:07:06
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

using namespace std;

int main() {
  ifstream in("podm.in");
  ofstream out("podm.out");
  int n;
  int index;
  int* ary;
  int** matr;

  in >> n;

  n += 1;
  ary = new int[n + 7];
  matr = new int*[n + 7];

  for (int i = 0; i < n + 7; ++i) {
    matr[i] = new int[n + 7];
    matr[i][i] = 0;
  }

  for (int i = 0; i < n; ++i) {
    in >> ary[i];
  }

  for (int i = 1; i < n; ++i) {
    matr[i][i + 1] = ary[i - 1] * ary[i] * ary[i + 1];

    for (int j = i - 2; j >= 1; --j) {
      int min = 10000000000;

      for (int k = j; k < i; ++k) {
        int part = matr[j][k] + matr[k + 1][i] + ary[j - 1] * ary[k] * ary[i];

        if (part < min) {
          min = part;
        }
      }

      matr[j][i] = min;
    }
  }
  
  out << matr[1][n - 1];

  in.close();
  out.close();

  return 0;
}