Cod sursa(job #1132859)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 3 martie 2014 23:21:50
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;

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

#define nmax 501
#define inf 0x3f3f3f3f

int i, j, k, n;

int d[nmax];
long long dp[nmax][nmax];

int main() {
	fin >> n; 
	memset(dp, inf, sizeof(dp));
	for (i = 0; i <= n; ++i) fin >> d[i], dp[i][i] = 0;
	for (i = n; i >= 1; --i) {
		for (j = i + 1; j <= n; ++j) {
			for (k = i; k < j; ++k) 
				dp[i][j] = min(dp[i][j], 1LL * dp[i][k] + dp[k + 1][j] + 1LL * d[i - 1] * d[j] * d[k]);
		}
	}
	fout << dp[1][n] << '\n';
	return 0;
}