Cod sursa(job #2082621)

Utilizator ice_creamIce Cream ice_cream Data 6 decembrie 2017 16:53:07
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const long long INF = 1LL << 60;
const int NMAX = 500 + 1;

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

void citeste() {
	f >> n;
	for (int i = 1; i <= n + 1; i++)
		f >> dim[i];
}

void rezolva() {
	for (int l = 2; l <= n; l++) {
		for (int i = 1; i <= n - l + 1; i++) {
			int j = i + l - 1;
			dp[i][j] = INF;
			for (int k = i; k < j; k++)
				dp[i][j] = min(
					dp[i][j], 
					dp[i][k] + dp[k + 1][j] + 1LL * dim[i] * dim[k + 1] * dim[j + 1]
				);
		}
	}
}

void scrie() {
	g << dp[1][n] << '\n';
}

int main() {
	citeste();
	rezolva();
	scrie();
	return 0;
}