Cod sursa(job #986122)

Utilizator toranagahVlad Badelita toranagah Data 17 august 2013 18:59:11
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <iostream>
using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

typedef long long int64;

const int64 INF = 1LL << 60;
const int MAX_N = 505;

int N;
int dim[MAX_N];
int64 d[MAX_N][MAX_N];


int main() {
  fin >> N;
  for (int i = 0; i <= N; ++i) {
    fin >> dim[i];
  }

  for (int i = 1; i <= N; ++i) d[i][i] = 0;
  for (int i = 1; i < N; ++i) {
    d[i][i + 1] = 1LL * dim[i - 1] * dim[i] * dim[i + 1];
  }

  for (int l = 2; l < N; ++l) {
    for (int i = 1; i + l <= N; ++i) {
      int j = i + l;
      d[i][j] = INF;
      for (int k = i; k < j; ++k) {
        d[i][j] = min(d[i][j], d[i][k] + d[k + 1][j] + 1LL * dim[i - 1] * dim[k] * dim[j]);
      }
    }
  }

  fout << d[1][N];
  return 0;
}