Cod sursa(job #2400404)

Utilizator eilerGabriel-Ciprian Stanciu eiler Data 8 aprilie 2019 18:22:17
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
using namespace std;

int main(){
	int n;
	long long d[501], dp[500][500];

	ifstream fin ("podm.in");
	fin >> n;
	for (int i=0; i<=n; i++)
		fin >> d[i];
	fin.close();

	for (int i=0; i<n; i++)
		dp[i][i]=0;
	for (int i=0; i<n-1; i++)
		dp[i][i+1]=d[i]*d[i+1]*d[i+2];

	for (int k=2; k<n; k++)
		for (int i=0; i+k<n; i++){
			dp[i][i+k]=dp[i][i]+dp[i+1][i+k]+d[i]*d[i+1]*d[i+k+1];
			for (int j=i+1; j<i+k; j++)
				dp[i][i+k]=min(dp[i][i+k], dp[i][j]+dp[j+1][i+k]+d[i]*d[j+1]*d[i+k+1]);
		}

	ofstream fout ("podm.out");
	fout << dp[0][n-1];
	fout.close();


	return 0;
}