Cod sursa(job #2757295)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 4 iunie 2021 21:36:29
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <limits>
#include <vector>
#include <algorithm>

using namespace std;

int N;
vector<vector<long long>> DP;
vector<long long> v;

int main()
{
  freopen("podm.in", "r", stdin);
  freopen("podm.out", "w", stdout);

  scanf("%d", &N);
  
  v.resize(N + 1);
  for (int i = 0; i <= N; ++i)
    scanf("%lld", &v[i]);

  DP.resize(N, vector<long long>(N, numeric_limits<long long>::max() / 4));

  
  for (int i = 0; i < N; ++i)
    DP[i][i] = 0;
  
  
  for (int i = N - 2; i >= 0; --i)
    for (int j = i + 1; j < N; ++j)
      for (int k = i; k < j; ++k)
	DP[i][j] = min(DP[i][j],
		       DP[i][k] + DP[k+1][j] + v[i] * v[k + 1] * v[j + 1]);
  
  
  printf("%lld", DP[0][N-1]);
  return 0;
}