Cod sursa(job #2345630)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 16 februarie 2019 15:45:53
Problema Parantezare optima de matrici Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("podm.in");
ofstream fout ("podm.out");
#define NMAX 503
const long long MX = (1LL << 53);
int v [NMAX], n, aux;
long long dp [NMAX][NMAX];
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] = (long long)(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;
}