Cod sursa(job #2505617)

Utilizator 1chiriacOctavian Neculau 1chiriac Data 7 decembrie 2019 09:44:56
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;
long long n,v[1005],d[1005][1005];
int main () {
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	scanf("%lld", &n);
	for(int i=1;i<=n+1;++i)
		scanf("%lld", &v[i]);
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
			d[i][j]=(1<<30);
	for(int i=1;i<=n;++i)
		d[i][i]=0;
	for(int i=1;i<n;++i)
		d[i][i+1]=v[i]*v[i+1]*v[i+2];
	//for(int i=1;i<n;++i)
	//	for(int j=2;i+j<=n;++j)
	for(int j=2;j<n;++j)
		for(int i=1;i+j<=n;++i)
			for(int k=0;k<j;++k)
				d[i][i+j]=min(d[i][i+j],d[i][i+k]+d[i+k+1][i+j]+v[i]*v[i+k+1]*v[i+j+1]);
	/*for(int i=1;i<=n;++i) {
		for(int j=1;j<=n;++j)
			printf("%d ", d[i][j]);
		printf("\n");
	}*/
	printf("%lld", d[1][n]);
	return 0;
}