Cod sursa(job #1750370)

Utilizator delia_ioanaCeapa Delia Ioana delia_ioana Data 29 august 2016 23:06:55
Problema Parantezare optima de matrici Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <iostream>
#include <vector>

using namespace std;

int main() {
	freopen("podm.in", "r", stdin);
	freopen("podm.out", "w", stdout);
	int N, a;
	vector<int> dims, D;
	scanf("%d", &N);

	if (N + 1 == 2)
		return 0;

	for (int i = 0; i <= N; i ++) {
		scanf("%d", &a);
		dims.push_back(a);
	}

	D.push_back(dims[0] * dims[1] * dims[2]);
	int first = 0, last = 2;
	if (N + 1 == 3)
		return D[0];
	
	D.push_back(min((dims[first] * dims[last] * dims[3] + D[0]), (dims[1] * dims[2] * dims[3] + dims[first] * dims[1] * dims[3])));
	last ++;

	for (int i = 4; i <= N; i ++) {
		D.push_back(min((dims[first] * dims[last] * dims[i] + D[i - 3]), (dims[i - 2] * dims[i - 1] * dims[i] + D[i - 4] + dims[first] * dims[i - 2] * dims[i])));
		last ++;
	}
	
	printf("%d\n", D[D.size() - 1]);
	return 0;
}