Cod sursa(job #2213104)

Utilizator b10nd3Oana Mancu b10nd3 Data 15 iunie 2018 17:05:13
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
#include<climits>

using namespace std;
#define MAX 505
#define MaxV 1000000000000000000;
int dim[MAX];
long long m[MAX][MAX];

int main(){
	ifstream in("podm.in");
	int n,i;
	in>>n;
	for(i=0;i<=n;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=MaxV; 
	   	  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]*1LL;
	   	  	    if(minV>aux) minV=aux;
			 }
	   	  m[i][i+d]=minV;
	   }
	   
	freopen("podm.out","w",stdout);   
	printf("%lld",m[1][n]);
	
	return 0;
}