Cod sursa(job #1929891)

Utilizator Alex_AmarandeiAmarandei Matei Alexandru Alex_Amarandei Data 18 martie 2017 12:00:01
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#define min(a, b) (a < b) ? a : b
#define INF 2147483647

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

int d[505], n, m[505][505], minn;

int main()
{
	int i, k = 0, x = 0;

	fin >> n;

	for (i = 0; i <= n; i++)
		fin >> d[i];

	for (i = 1; i <= n - 1; i++)
		m[i][i + 1] = d[i - 1] * d[i] * d[i + 1];

	for (x = 2; x < n; x++)
	{
		for (i = 1; i <= n - x; i++)
		{
			m[i][i + x] = INF;
			for (k = i; k < i + x; k++)
				if (m[i][i + x] > m[i][k] + m[k + 1][i + x] + d[i - 1] * d[k] * d[i + x])
					m[i][i + x] = m[i][k] + m[k + 1][i + x] + d[i - 1] * d[k] * d[i + x];

		}
	}

	fout << m[1][n] << '\n';


	fin.close();
	fout.close();
	return 0;
}