Cod sursa(job #2138318)

Utilizator DawlauAndrei Blahovici Dawlau Data 21 februarie 2018 15:51:39
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<fstream>
#include<climits>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
typedef unsigned long long ull;
const int NMAX = 505;
const ull INF = ULLONG_MAX;

ull bestCuts[NMAX][NMAX];
int dim[NMAX];
int n;

inline void read_data(){

    fin >> n;

    int i;
    for(i = 0; i <= n; ++i)
        fin >> dim[i];
}

inline ull get_bestCuts(){

    int leftIndex, rightIndex, cutter, length;

    for(length = 2; length <= n; ++length)
        for(leftIndex = 1; leftIndex <= n - length + 1; ++leftIndex){

            rightIndex = leftIndex + length - 1;
            bestCuts[leftIndex][rightIndex] = INF;

            for(cutter = leftIndex; cutter < rightIndex; ++cutter)
                bestCuts[leftIndex][rightIndex] = min(bestCuts[leftIndex][rightIndex], bestCuts[leftIndex][cutter] + bestCuts[cutter + 1][rightIndex] + 1ULL * dim[leftIndex - 1] * dim[cutter] * dim[rightIndex]);
        }
    return bestCuts[1][n];
}

int main(){

    read_data();
    fout << get_bestCuts();
}