Cod sursa(job #2213076)

Utilizator b10nd3Oana Mancu b10nd3 Data 15 iunie 2018 16:48:00
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream>
#include<limits.h>

using namespace std;
#define MAX 500
int dim[MAX];
long long m[MAX+1][MAX+1];

int main(){
	ifstream in("podm.in");
	int n,i;
	in>>n;
	for(i=0;i<n+1;i++) in>>dim[i];
	in.close();
	
	for(i=1;i<n;i++) m[i][i+1]=dim[i-1]*dim[i]*dim[i+1];
	for(int d=2;d<n;d++)
	   for(i=1;i<=n-d;i++){
	   	  long long minV=LLONG_MAX-10; 
	   	  for(int k=i; k<i+d; k++){
	   	  	    long long aux=m[i][k]+m[k+1][i+d]+dim[i-1]*dim[k]*dim[i+d];
	   	  	    if(minV>aux) minV=aux;
			 }
	   	  m[i][i+d]=minV;
	   }
	   
	freopen("podm.out","w",stdout);   
	printf("%lld",m[1][n]);
	
	return 0;
}