Cod sursa(job #1652910)

Utilizator andreeammAndreea Musat andreeamm Data 15 martie 2016 16:23:22
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <fstream>
#define FLAG (1ll<<60)
#define MINIM(a, b) ((a)>(b)?(b):(a))
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
int main()
{
    int n, i, j, l, k;
    in >> n;
    long long m[n+1][n+1], d[n+1];
    for(i = 0; i <= n; i++) in >> d[i];
    for(i = 1; i <= n; i++) m[i][i] = 0;
    for(i = 1; i <= n-1; i++) m[i][i+1] = d[i-1]*d[i]*d[i+1];
    for(l = 2; l < n; l++) 
	for(i = 1; i <= n-l; i++)
	{
	    j = i+l;
	    m[i][j] = FLAG;
	    for(k = i; k <= j-1; k++)
	        m[i][j] = MINIM(m[i][j], m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j]);
	}
    out << m[1][n]; 	
}