Cod sursa(job #2384075)

Utilizator sansRotaru Razvan Andrei sans Data 20 martie 2019 11:15:50
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;
#define NMAX 750
typedef long long ll;
ll mat[NMAX][NMAX];
ll d[NMAX];
int main(){

    freopen("podm.in","r", stdin);
    freopen("podm.out", "w", stdout);

    int n;
    scanf("%d", &n);
    for(int i = 0; i<=n; i++){
        scanf("%lld", &d[i]);
    }
    for(int i = 1; i<=n; i++) mat[i][i] = 0;
    for(int i = 1; i<n; i++){
        mat[i][i+1] = d[i-1]*d[i]*d[i+1];
    }
    for(int v = 2; v<n; v++){
        for(int i = 1; i<=n-v; i++){
            int j = v + i;
            mat[i][j] = LLONG_MAX;
            for(int k = i; k<j; k++){
                mat[i][j] = min(mat[i][j], mat[i][k]+mat[k+1][j]+d[i-1]*d[k]*d[j]);
            }
        }
    }
    printf("%d", mat[1][n]);
}