Cod sursa(job #2105297)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 12 ianuarie 2018 23:09:20
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <climits>
#include <algorithm>
#define NMAX 501

using namespace std;

long long dp[NMAX][NMAX];
long long d[NMAX + 1];
int n;

void read() {

	ifstream in("podm.in");

	in >> n;

	for (int i = 1; i <= n + 1; i++)
		in >> d[i];

	in.close();
}

int main() {

	read();
		
	for (int i = 1; i < n; i++)
		dp[i][i + 1] = d[i] * d[i + 1] * d[i + 2];
		
	for (int len = 3; len <= n; len++)
		for (int i = 1, j = len; i <= n && j <= n; i++, j++) {

			dp[i][j] = LLONG_MAX;
			for (int k = i; k < j; k++) {

				dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + d[i] * d[k + 1] * d[j + 1]);
			}

		}

	ofstream out("podm.out");
	out << dp[1][n] << "\n";
	out.close();
}