Cod sursa(job #2244223)

Utilizator greelioGreenio Greely greelio Data 22 septembrie 2018 14:17:41
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<bits/stdc++.h>
#define NMAX 505
#define ll long long
using namespace std;

const ll inf = 2000000000000;
int n;
ll dp[NMAX][NMAX], d[NMAX];

int32_t main() {
    ifstream cin("podm.in");
    ofstream cout("podm.out");
    cin>>n;

    for (int i=0; i<=n; i++) cin>>d[i];

    for (int i=1, j=2; i<=n && j<=n; i++, j++) {
        dp[i][j] = d[i-1]*d[i]*d[j];
    }


    for (int r=2; r<=n; r++) {
        for (int i=1; i<=n; i++) {
            int j=i+r;
            dp[i][j] = inf;
            for (int k=i; k<j; k++) {
                dp[i][j] = min(dp[i][j], dp[i][k]+dp[k+1][j]+d[i-1]*d[k]*d[j]);
            }
        }
    }

    cout<<dp[1][n];

    return 0;
}