Cod sursa(job #1458076)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 6 iulie 2015 15:36:57
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <vector>
#include <limits>
#include <utility>
using namespace std;

using ll = long long;
constexpr ll inf = numeric_limits<ll>::max();

int main(){
	ifstream f("podm.in");
	ofstream g("podm.out");
	int n = 0;
	f >> n;
	vector<ll> v(n+1);
	for(auto& x : v){
		f >> x; }
	vector<vector<ll> > d(n, vector<ll>(n, inf));
	for(int i = 0; i < n; ++i){
		d[i][i] = 0; }
	for(int i = 0; i+1 < n; ++i){
		d[i][i+1] = v[i] * v[i+1] * v[i+2]; }
	for(int delta = 3; delta <= n; ++delta){
		for(int st = 0, dr = delta-1; dr < n; ++st, ++dr){
			for(int mij = st; mij < dr; ++mij){
				d[st][dr] = min(d[st][dr], 
					d[st][mij] + d[mij+1][dr] +
						v[st] * v[mij+1] * v[dr+1]); } } }
	g << d[0][n-1] << '\n';
	return 0; }