Cod sursa(job #515650)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 21 decembrie 2010 22:46:53
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");

const int maxn=505,INF=10000000000000000000LL;
int i,j,q,k,N,d[maxn];
long long best[maxn][maxn];

int Min(int a, int b)
{
	if(a<b) return a;
	return b;
}

int main()
{
	fin >> N;
	for(i=1;i<=N+1;i++) 
		fin >> d[i-1];
	for(i=1;i<=N;i++) best[i][i]=0;
	for(i=1;i<=N;i++) best[i][i+1]=d[i-1]*d[i]*d[i+1];
	for(q=2;q<=N-1;q++) // distanta --> best[i][i+q]
		for(i=1;i<=N-q;i++) // parcurgerea matricelor pe portiuni q
		{
			j=i+q; //ultima matrice
			best[i][j]=INF;
			for(k=i;k<=j-1;k++)
				best[i][j]=Min(best[i][j],best[i][k]+best[k+1][j]+d[i-1]*d[k]*d[j]);
		}
	fout << best[1][N];
}