Cod sursa(job #1850584)

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

using namespace std;

const int N = 555;
const int INF = 0x3f3f3f3f;

int d[N];
int 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;
  scanf("%d", &n);
  for (int i = 0; i <= n; i++) {
    scanf("%d", 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] + d[i - 1] * d[k] * d[j]);
      }
    }
  }
  printf("%d\n", dp[1][n]);
  return 0;
}