Cod sursa(job #2794330)
| Utilizator | Data | 4 noiembrie 2021 17:53:58 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
typedef long long ll;
const ll inf=3e18+7;
ll dp[505][505];
ll d[505],n;
int main()
{
in>>n;
for(ll i=0;i<=n;++i)
in>>d[i];
for(ll i=1;i<=n-1;++i)
dp[i][i+1]=d[i-1]*d[i]*d[i+1];
for(ll l=2;l<n;++l)
for(ll i=1;i+l<=n;++i)
{
dp[i][i+l]=inf;
for(ll k=i;k<i+l;++k)
dp[i][i+l]=min(dp[i][i+l],dp[i][k]+dp[k+1][i+l]+d[i-1]*d[k]*d[i+l]);
}
out<<dp[1][n]<<'\n';
return 0;
}
