Cod sursa(job #1830328)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 16 decembrie 2016 15:46:01
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include <cstring>

using namespace std;

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

unsigned long long f_mare = (1<<31);
int n, i, a[505], w, j, k;
unsigned long long sol[505][505];

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

    for (i = 1; i < n; i++)
        sol[i][i+1] = 1LL*a[i-1]*a[i]*a[i+1];

    for (w = 2; w < n; w++)
        for (i = 1; w+i <= n; i++) {
            j = i+w;
            sol[i][j] = f_mare;
            for (k = i; k < j; k++) {
                sol[i][j] = min(sol[i][j], sol[i][k] + sol[k+1][j] + 1LL*a[i-1]*a[k]*a[j]);
            }
        }
    g << sol[1][n];
    return 0;
}