Cod sursa(job #384469)

Utilizator alexandru92alexandru alexandru92 Data 20 ianuarie 2010 09:46:52
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <vector>
#include <fstream>
#include <iterator>
#define NMax 510
#define inf 0x3f3f3f3f

/*
 *
 */
using namespace std;
typedef unsigned long long int llu;
vector<llu> v;
llu m[NMax][NMax];
int main()
{unsigned int n, i, j, k;
	ifstream in("podm.in");
	in>>n;
	copy( istream_iterator<int>(in), istream_iterator<int>(), back_inserter(v) );
	for( i=n-1; i > 0; --i )
	{
		m[i][i+1]=v[i-1]*v[i]*v[i+1];
		for( j=i+2; j <= n; ++j )
		{m[i][j]=inf;
			for( k=i; k < j; ++k )
				m[i][j]=min( m[i][j], m[i][k]+m[k+1][j]+ v[i-1]*v[j]*v[k] );
		}
	}
	ofstream out("podm.out");
	out<<m[1][n];
	return 0;
}