Cod sursa(job #416422)

Utilizator toniobFMI - Barbalau Antonio toniob Data 12 martie 2010 18:47:10
Problema Parantezare optima de matrici Scor 80
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 long long MULT=100000000000000LL;
const int NMax=1<<10;
int N,PD[NMax][NMax],D[NMax];

inline int MIN(int a,int b){
	return a<b?a:b;
}

void IN(),OUT(),EXE();
int main(){EXE();return 0;}

void EXE(){
	IN();
	for(int i=1;i<N;PD[i][i]=0,PD[i][i+1]=D[i]*D[i+1]*D[i+2],++i);
	for(int i=2;i<N;++i){
		for(int j=1;j<=N-i;++j){
			PD[j][j+i]=MULT;
			for(int k=j,minim;k<=i+j-1;++k){
				minim=PD[j][k]+PD[k+1][i+j]+D[j]*D[k+1]*D[i+j+1];
				PD[j][j+i]=MIN(minim,PD[j][j+i]);
			}
		}
	}
	OUT();
}

void IN(){
	FIn>>N;
	for(int i=1;i<=N+1;FIn>>D[i++]);
}

void OUT(){
	FOut<<PD[1][N];
}