Cod sursa(job #2593499)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 4 aprilie 2020 00:40:59
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <limits>

using namespace std;

vector<vector<long long>> DP;
vector<long long> dim;

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

  fin.sync_with_stdio(false);
  fin.tie(0);

  int N;
  fin >> N;
  
  DP.resize(N);
  fill(DP.begin(),
       DP.end(),
       vector<long long>(N, numeric_limits<long long>::max() / 4));

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

  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] + dim[i]*dim[k+1]*dim[j+1]);

  fout << DP[0][N-1] << "\n";
  return 0;
}