Cod sursa(job #2505168)

Utilizator richard26Francu Richard richard26 Data 6 decembrie 2019 12:44:22
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <bits/stdc++.h>

using namespace std;

const int INF = numeric_limits<int>::max();

using ll = long long;
int main()
{
	ifstream f("podm.in");
	ofstream g("podm.out");
	int n;
	f >> n;
	vector<int> v(n + 1);
	vector<vector<ll>> dp(n + 1, vector<ll>(n + 1, INF));
	for (int i = 0; i < n + 1; i++) {
		f >> v[i];
	}

	for (int i = 1; i <= n; i++) {
		dp[i][i] = 0;
	}
	for (int i = 1; i <= n - 1; i++) {
		dp[i][i + 1] = v[i - 1] * v[i] * v[i + 1];
	}

	for (int i = 2; i <= n - 1; i++) {
		for (int j = 1; j <= n - i; j++) {
			for (int k = j; k < i + j; k++) {
				dp[j][i + j] = min(dp[j][i + j], dp[j][k] + dp[k + 1][i + j] + v[j - 1] * v[k] * v[i + j]);
			}
		}
	}

	g << dp[1][n];
	return 0;
}