Cod sursa(job #3266543)

Utilizator divadddDavid Curca divaddd Data 9 ianuarie 2025 13:53:50
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int NMAX = 502;
int n,v[NMAX],dp[NMAX][NMAX];

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

template<typename T>
void minSelf(T &a, T b){
  a = min(a, b);
}

signed main() {
  fin >> n;
  for(int i = 0; i <= n; i++){
    for(int j = i+1; j <= n; j++){
      dp[i][j] = 1e12;
    }
  }
  for(int i = 0; i <= n; i++){
    fin >> v[i];
  }
  for(int i = 1; i < n; i++){
    dp[i][i+1] = v[i-1]*v[i]*v[i+1];
  }
  for(int len = 2; len < n; len++){
    for(int i = 1; i <= n-len; i++){
      int j = i+len;
      for(int k = i; k < j; k++){
        minSelf(dp[i][j], dp[i][k]+dp[k+1][j]+v[i-1]*v[k]*v[j]);
      }
    }
  }
  fout << dp[1][n];
  return 0;
}