Cod sursa(job #3216616)

Utilizator cosmin_varlanVarlan Nicolae Cosmin cosmin_varlan Data 18 martie 2024 18:15:06
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n;
unsigned long long a[505][505];
int dim[501];

void Rec(int st, int dr){
    if (a[st][dr]!=0 || st==dr) return;
    unsigned long long minim = -1;
    for(int brpt=st; brpt<dr; brpt++) /// brpt = break point
    {
        Rec(st, brpt);
        Rec(brpt+1, dr);
        unsigned long long aux = a[st][brpt] + a[brpt+1][dr] + dim[st-1]*dim[dr]*dim[brpt];
        if (minim>aux)
        {
            minim=aux;
            //a[dr][st] = brpt;
        }
    }
    a[st][dr] = minim;
/*
    for(int i=0; i<=n; i++)
    {
        for(int j=0; j<=n; j++)
            fout << a[i][j] << ' ';
        fout << endl;
    }
    fout << "==================\n";
*/
}


int main()
{

    fin >> n;
    for(int i=0; i<=n; i++)
        fin >> dim[i];
    Rec(1,n);
    /*for(int i=0; i<=n; i++)
    {
        for(int j=0; j<=n; j++)
            fout << a[i][j] << ' ';
        fout << endl;
    }*/

    fout << a[1][n];

    return 0;
}