Cod sursa(job #525798)

Utilizator icepowdahTudor Didilescu icepowdah Data 26 ianuarie 2011 12:39:51
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream>
using namespace std;

#define INF 100000000000000000LL

int main(void)
{
	int n, i, j, k, l;
	long long int **M, q, d[501];

	ifstream f("podm.in");
	ofstream g("podm.out");
	
	f >> n;
	for (i=0;i<=n;i++)
	{
		f>>d[i];		
	}
	f.close();

	M = new long long int* [n+1];
	for (i=1;i<=n;i++)
	{
		M[i] = new long long int [n+1];
		M[i][i] = 0;
	}

	for (l=2;l<=n;l++)
	{
		for (i=1;i<=n-l+1;i++)
		{
			j = i+l-1;
			M[i][j] = INF;
			for (k=i;k<j;k++)
			{
				q = M[i][k]+M[k+1][j]+d[i-1]*d[k]*d[j];
				if (q < M[i][j])
				{
					M[i][j] = q;
				}
			}
		}
	}
		
	g<<M[1][n]<<'\n';
	g.close();

	for (i=1;i<=n;i++)
	{
		delete[] M[i];
	}
	delete[] M;

	return 0;
}