Mai intai trebuie sa te autentifici.

Cod sursa(job #1002944)

Utilizator nimeniaPaul Grigoras nimenia Data 29 septembrie 2013 12:52:48
Problema Parantezare optima de matrici Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <string.h>
#include <iostream>

using namespace std;

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

int main() {
	int n;
	f >> n;
	long long d[n + 2];
	long long m[n + 2][n + 2];
	memset(m, 0, sizeof(long long) * (n + 2) * (n + 2));
	for (int i = 0; i <= n; i++) {
		f >> d[i];
	}

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

	for (int j = 3; j <= n; j++) {
		for (int i = 0; i <= n - j; i++) {
			for (int k = i + 1; k <= i + j; k++) {
				int c = d[i] * d[k] *d[j];
				if (m[i + 1][j + i] == 0)
					m[i + 1][j + i] = m[i + 1][k] + m[k+1][j + i] + c;
				else
					m[i + 1][j + i] = min(m[i + 1][k] + m[k+1][j + i] + c,
										 m[i + 1][j + i]);
			}

		}
	}

	g << m[1][n] << endl;
	return 0;
}