Cod sursa(job #381119)

Utilizator GappPaun Catalin Gapp Data 9 ianuarie 2010 10:21:37
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>

using namespace std;

const long long INF = (long long)1<<60;
const long long N = 501;

long long nr[N][N];

long long n, a[N+1];

ifstream fin("podm.in");
ofstream fout("podm.out");

void citire() {

	fin>>n;
	for (int i = 1; i <= n+1; i++) fin>>a[i];

}

void initializare_dinamica() {

	for (int j = 1; j <= n; j++) nr[j][j] = 0;

}

void dinamica() {
	int j;
	long long value;
	for (int d = 1; d <= n-1; d++) {

		for (int i = 1; (j = i+d) <= n; i++) {

			nr[i][j] = INF;

			for (int k = i; k <= j-1; k++) {

				value = nr[i][k] + nr[k+1][j] + a[i] * a[k+1] * a[j+1];
				if (value < nr[i][j]) nr[i][j] = value;

			}
		}
	}
}

int main() {
	
	citire();

	initializare_dinamica();

	dinamica();

	fout<<nr[1][n];

	return 0;
}