Cod sursa(job #1850598)

Utilizator msciSergiu Marin msci Data 18 ianuarie 2017 19:36:11
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

const int N = 511;
const long long INF = numeric_limits<long long>::max();

long long d[N];
long long dp[N][N];

int main() {
  freopen("podm.in", "r", stdin);
  freopen("podm.out", "w", stdout);
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      dp[i][j] = (i == j ? 0 : INF);
    }
  }
  int n;
  cin >> n;
  for (int i = 0; i <= n; i++) {
    cin >> d[i];
  }
  for (int i = n - 1; i >= 1; i--) {
    for (int j = i + 1; j <= n; j++) {
      for (int k = i; k <= j - 1; k++) {
        dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + 1LL * d[i - 1] * d[k] * d[j]);
      }
    }
  }
  cout << dp[1][n] << "\n";
  fflush(stdout);
  return 0;
}