Cod sursa(job #2813476)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 6 decembrie 2021 19:24:13
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cstring>
#include <climits>
using namespace std;


int n;
long long int v[502],dp[502][502];

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



int main()
{

	fin >> n;
	++n;
	for (int i = 1; i <= n+1; i++)
	{
		fin >> v[i];
	}
	for (int i = 1; i <= n; i++)
	{
		dp[i][i + 1] = 0;
	}
	for (int lung = 3; lung <= n; lung++)
	{
		for (int st = 1; st + lung - 1 <= n; st++)
		{
			int dr = st + lung - 1;
			dp[st][dr] = LONG_MAX;
			for (int k = st + 1; k <= dr - 1; k++) {
				dp[st][dr] = min(dp[st][dr], v[st] * v[k] * v[dr] + dp[st][k] + dp[k][dr]);
			}
		}
	}
	fout << dp[1][n];
	return 0;
}