Cod sursa(job #812852)

Utilizator andrei.baliciBalici Andrei andrei.balici Data 14 noiembrie 2012 16:39:10
Problema Parantezare optima de matrici Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;
ifstream intrare ("podm.in");
ofstream iesire ("podm.out");

unsigned long long int n;
unsigned long long int d[101];
unsigned long long int inf;
unsigned long long int nrmin[101][101];

int main()
	{
	unsigned long long int k, nr, i, j;
	//citire
	intrare>>n;
	for (i=0;i<=n;i++) intrare>>d[i];
	inf=1000000000000000000LL;
	//pd
	//initializare
	for (i=1;i<n;i++) nrmin[i][i+1]=d[i-1]*d[i]*d[i+1];
	for (nr=3;nr<=n;nr++)
		for (i=1;i<=n-nr+1;i++)
			{
			j=i+nr-1;
			//calculez nrmin[i][j]
			nrmin[i][j]=inf;
			for (k=i;k<j;k++)
				if (nrmin[i][j]>nrmin[i][k]+nrmin[k+1][j]+d[i-1]*d[k]*d[j])
					{
					nrmin[i][j]=nrmin[i][k]+nrmin[k+1][j]+d[i-1]*d[k]*d[j];
					nrmin[j][i]=k;
					}
			}
	iesire<<nrmin[1][n]<<'\n';
	//afisare (1, n)
	return 0;
	}