Cod sursa(job #3191738)

Utilizator RatebaSerbanescu Andrei Victor Rateba Data 10 ianuarie 2024 16:10:03
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <climits>

using namespace std;

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

const int MAX_N = 502;
long long dp[MAX_N][MAX_N];
long long dims[MAX_N];

const long long INF = LONG_MAX;

int main() 
{

    int n;

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

    for (int d = 1; d < n; d++) {
        for (int i = 1; i <= n - d; i++) {
            int j = i + d;

            long long minn = LONG_MAX;
            for (int k = i; k < j; k++) {
                long long q = dp[i][k] + dp[k + 1][j] + dims[i - 1] * dims[k] * dims[j];
            
                minn = min(minn, q);
            }

            dp[i][j] = minn;
        }
    }

    // for (int i = 1; i <= n; i++) {
    //     for (int j = 1; j <= n; j++) {
    //         fout << setw(5) << dp[i][j] << ' ';
    //     }
    //     fout << endl;
    // }

    fout << dp[1][n];

    return 0;
}