Cod sursa(job #2504960)

Utilizator miruna1224Floroiu Miruna miruna1224 Data 5 decembrie 2019 20:46:30
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

#define ll long long
#define f0(i, n) for(int i = 0; i < n; i++)
#define f1(i, n) for (int i = 1; i <= n; i++)
#define fc(i, j, x) for(int i = j; i < x; i++)


const int N = 505;
const ll inf = 1e18;

int v[N], n;
ll dp[N][N];


int main(){

  ifstream in ("podm.in");
  in >> n;
  f0(i, n + 1)
    in >> v[i];
  in.close();


  f1(i, n)
    f1(j, n)
      dp[i][j] = inf;

  f1(i, n)
    dp[i][i] = 0;

  f1(i, n - 1)
    f1(j, n - i){
      int x = j + i;
      fc(k, j, x)
        dp[j][x] = min (dp[j][x], dp[j][k] + dp[k + 1][x] + (ll)v[j - 1] * v[k] * v[x]);
    }


  ofstream out ("podm.out");
  out << dp[1][n];
  out.close();

  return 0;
}