Cod sursa(job #3237685)

Utilizator tsg38Tsg Tsg tsg38 Data 11 iulie 2024 20:00:07
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int DIM = 503;
const ll INF = 1e13;

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

ll dp[DIM][DIM];
int v[DIM];

int main() {
  ios_base::sync_with_stdio(0);
  fin.tie(0);
  int n;

  fin >> n;
  for ( int i = 0; i <= n; ++i ) {
	fin >> v[i];
  }
  for ( int i = 0; i + 2 <= n; ++i ) dp[i][i + 2] = (ll)v[i] * v[i + 1] * v[i + 2];
  for ( int l = 3; l <= n; ++l ) {
	for ( int i = 0; i + l <= n; ++i ) {
	  int j = i + l;
	  dp[i][j] = INF;
	  for ( int k = i; k <= j; ++k ) {
        dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j] + (ll)v[i] * v[k] * v[j]);
	  }
	}
  }
  fout << dp[0][n];
  fin.close();
  fout.close();
  return 0;
}