Cod sursa(job #787338)

Utilizator MciprianMMciprianM MciprianM Data 13 septembrie 2012 10:52:22
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
#include <vector>

using namespace std;

vector<int> v;
long long cache[502][502];

long long solve(int i, int j){
	if(cache[i][j] == cache[501][501]) {
		int k;
		for(k = i; k < j; ++k) {
			cache[i][j] = min(solve(i, k) + solve(k + 1, j) + v[i - 1] * v[k] * 1ll * v[j], cache[i][j]);
		}
		if(i == j) {
			cache[i][j] = 0;
		}
	}
	return cache[i][j];
}

int main(){
	int i, n;
	memset(cache, 0x1F, sizeof(cache));
	ifstream f("podm.in");
	f >> n;
	++n;
	v.resize(n);
	for(i = 0; i < n; ++i) {
		f >> v[i];
	}
	long long ans = solve(1, v.size() - 1);
	ofstream g("podm.out");
	g << ans << endl;
	g.close();
	return 0;
}