Cod sursa(job #2908255)

Utilizator ClaudiuChelceaClaudiuChelcea ClaudiuChelcea Data 2 iunie 2022 13:04:41
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
 
const long long INF = 100000000000000000LL;//(long long)1<<62;
const long long N = 501;
 
long long nr[N][N];
 
long long n,a[N+1];
 
void citire()
{
	scanf("%lld",&n);
	for (int i = 1; i <= n+1; ++i)
		scanf("%lld",&a[i]);
}
 
void initializare_dinamica()
{
	for (int j = 1; j <= n; ++j)
		nr[j][j] = 0;
}
 
void dinamica()
{
	int j;
	long long val_nr;
	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)
			{
				val_nr = nr[i][k] + nr[k+1][j] + a[i] * a[k+1] * a[j+1];
				if (val_nr < nr[i][j])
					nr[i][j] = val_nr;
			}
		}
}
 
int main()
{
	freopen("podm.in","r",stdin);
	freopen("podm.out","w",stdout);
	citire();
	initializare_dinamica();
	dinamica();
	printf("%lld",nr[1][n]);
	return 0;
}