Cod sursa(job #2172221)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 15 martie 2018 15:39:44
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

const int N = 505;
const long long f_mare = 3e17;
int n, a[N], i, j, l, k;
long long dp[N][N], minim;

int main() {
    f >> n;
    for (i = 0; i <= n; i++)
        f >> a[i];

    for (i = 1; i < n; i++)
        dp[i][i+1] = a[i-1]*a[i]*a[i+1];
    for (l = 3; l <= n; l++)
        for (i = 1; i+l-1 <= n; i++) {
            j = i+l-1;
            minim = f_mare;
            for (k = i; k < j; k++)
                minim = min(minim, dp[i][k] + dp[k+1][j] + a[i-1]*a[k]*a[j]);
            dp[i][j] = minim;
        }
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= n; j++)
            g << dp[i][j] << ' ';
        g << '\n';
    }
    g << dp[1][n];
}