Cod sursa(job #3207450)

Utilizator AndreiMLCChesauan Andrei AndreiMLC Data 26 februarie 2024 10:43:17
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <queue>

using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

int n;
int v[505];
long long inf = (1LL << 60);
long long dp[505][505];
int t[505][505];

void citire()
{
	f >> n;
	for (int i = 0; i <= n; i++)
	{
		f >> v[i];
	}

	for (int i = 1; i <= n; i++) 
	{
		dp[i][i] = 0;
		for (int j = i + 1; j <= n; j++) 
		{
			dp[i][j] = inf;
		}
	}
}

void rezolvare_bu()
{
	for (int pas = 1; pas <= n - 1; pas++)
	{
		for (int i = 1; i <= n - pas; i++)
		{
			int j = i + pas;
			for (int k = i; k < j; k++)
			{
				long long cost = dp[i][k] + dp[k + 1][j] + v[i - 1] * v[k] * v[j];
				dp[i][j] = min(cost, dp[i][j]);
				t[i][k] = j;
			}
		}
	}
}

int main()
{
	citire();
	rezolvare_bu();
	/*
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= n; j++)
		{
			g << dp[i][j] << ' ';
		}
		g << '\n';
	}*/
	g << dp[1][n];
}