Cod sursa(job #2493358)

Utilizator AntoniuFicAntoniu Ficard AntoniuFic Data 16 noiembrie 2019 11:49:11
Problema Parantezare optima de matrici Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

long long dim[505], n;

long long dp[500][500];

void dinamica(){
    for (int i = 1; i <= n; ++i) {
        dp[i][i] = 0;
    }
    for (int i = 1; i <= n - 1; ++i) {
        dp[i][i + 1] = dim[i-1] * dim[i] * dim[i + 1];
    }
    for (int d = 1; d < n; ++d) {
        for (int i = 1; i <= n - d; ++i) {
            int mini = 1010110101;
            for (int k = i; k < i + d; ++k) {
                mini = min(mini, dp[i][k] + dp[k + 1][i + d] + dim[i - 1] * dim[k] * dim[i + d]);
            }
            dp[i][i + d] = mini;
        }
    }
}

int main() {
    ifstream f("podm.in");
    ofstream g("podm.out");
    f>>n;
    for (int i = 0; i < n + 1; ++i) {
        f>>dim[i];
    }
    dinamica();
    g<<dp[1][n];
    return 0;
}