Cod sursa(job #1220863)

Utilizator andreas.chelsauAndreas Chelsau andreas.chelsau Data 18 august 2014 18:53:16
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <stdio.h>
using namespace std;
typedef long long ll;

int n;
ll a[501],m[502][502];
const ll MAX = (1LL << 60);


int main(){
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	int i = 0;

	scanf("%d",&n);
	for(i = 0; i <= n; i++){
		scanf("%lld",&a[i]);
	}
	for(i = 1; i < n; i++)
		m[i][i + 1] = a[i - 1] * a[i] * a[i + 1];

	for(int d = 2; d < n; d++)
		for(i = 1; i <= n - d; i++){
			m[i][i + d] = MAX;
			for(int k = 0; k < d; k++)
				m[i][i + d] = m[i][i + d] < m[i][i + k] + m[i + k + 1][i + d] + a[i - 1] * a[i + k] * a[i + d] ? m[i][i + d] : m[i][i + k] + m[i + k + 1][i + d] + a[i - 1] * a[i + k] * a[i + d];
    }
	printf("%lld\n",m[1][n]);

	return 0;
}