Cod sursa(job #2759059)
| Utilizator | Data | 15 iunie 2021 00:12:52 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
int n;
cin >> n;
ll a[n+1];
ll dp[n][n];
for(int i=0;i<=n;i++)
cin >> a[i];
for(int l=n-1;l>=0;l--) {
dp[l][l] = 0;
for(int r=l+1;r<n;r++) {
dp[l][r] = (ll)5e15;
for(int i=l;i<r;i++)
dp[l][r] = min(dp[l][r], dp[l][i]+dp[i+1][r]+a[l]*a[i+1]*a[r+1]);
}
}
cout << dp[0][n-1] << '\n';
return 0;
}