Cod sursa(job #380961)

Utilizator Bit_MasterAlexandru-Iancu Caragicu Bit_Master Data 8 ianuarie 2010 12:15:27
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<cstdio>

const long long INF = (long long)1<<60;
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,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;
}