Cod sursa(job #1318144)

Utilizator retrogradLucian Bicsi retrograd Data 15 ianuarie 2015 17:52:46
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<fstream>

#define INF 10000000000

using namespace std;

typedef int64_t var;

ifstream fin("podm.in");
ofstream fout("podm.out");

var M[501][501], D[501];
var n;

var m(int i, int j) {
    if(i == j) return 0;
    if(M[i][j]) return M[i][j];
    var MIN = INF;
    for(var k=i; k<j; k++) {
        MIN = min(MIN, m(i, k) + m(k+1, j) + D[i-1]*D[k]*D[j]);
    }
    M[i][j] = MIN;
    return M[i][j];
}

int main() {
    fin>>n;
    //fout<<INF;
    for(var i=0; i<=n; i++) {
        fin>>D[i];
    }
    for(var i=1; i<=n; i++) {
        M[i][i+1] = D[i-1]*D[i]*D[i+1];
    }
    fout<<m(1, n);
    return 0;
}