Cod sursa(job #2345638)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 16 februarie 2019 15:49:39
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("podm.in");
ofstream fout ("podm.out");
#define NMAX 513
const long long MX = (1LL << 60);
int v [NMAX], n;
long long dp [NMAX][NMAX], aux;
int main (){
    fin >> n;
    for(int i = 0; i <= n; i ++)fin >> v [i];
    for (int i = 1; i <= n; i ++)
        dp [i][i + 1] = 1LL * v [i - 1] * v [i] * v [i + 1];
    for (int dim = 2; dim < n; dim ++){
        for (int i = 1; i <= n - dim; i ++){
            dp [i][i + dim] = MX;
            for (int j = i; j < i + dim; j ++){
                aux = dp [i][j] + dp [j + 1][i + dim] + 1LL * v [i - 1] * v [j] * v [i + dim];
                if (aux < dp [i][i + dim])dp [i][i + dim] = aux;
            }
        }
    }
    fout << dp [1][n];
    return 0;
}