Cod sursa(job #1318171)

Utilizator retrogradLucian Bicsi retrograd Data 15 ianuarie 2015 18:15:49
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 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;

inline var m() {
    var MIN;
    for(var len = 2; len <= n; len++) {
        for(var i=1; i<=n-len; i++) {
            MIN = INF;
            for(var j=i; j<i+len; j++) {
                MIN = min(MIN, M[i][j] + M[j+1][i+len] + D[i-1]*D[j]*D[i+len]);
            }
            M[i][i+len] = MIN;
        }
    }
    return M[1][n];
}

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();
    return 0;
}