Cod sursa(job #1318154)

Utilizator retrogradLucian Bicsi retrograd Data 15 ianuarie 2015 17:59:05
Problema Parantezare optima de matrici Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>

#define INF 9223372036854775807LL
using namespace std;

typedef int64_t var;

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

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

var m(var i, var j) {
    if(DA[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;
    DA[i][j] = 1;
    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];
        DA[i][i+1] = 1;
        DA[i][i] = 1;
    }
    fout<<m(1, n);
    return 0;
}