Cod sursa(job #3257096)
| Utilizator | Data | 16 noiembrie 2024 16:48:16 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <bits/stdc++.h>
#define INF 10000000000000000LL
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
long long n,a[503],i,j,k,dp[503][503];
int main()
{ f>>n;
for (i=1;i<=n+1;i++){
f>>a[i];
}
//dp[i][i]=0
for (i=2;i<=n;i++){
dp[i-1][i]=1ll*a[i-1]*a[i]*a[i+1];
}
for (i=n;i>0;i--){
for (j=2;i+j<=n;j++){
dp[i][i+j]=INF;
for (k=i;k<=i+j;k++){
dp[i][i+j]=min(dp[i][i+j],
1ll*dp[i][k]+dp[k+1][i+j]+1ll*a[i]*a[k+1]*a[i+j+1]);
}
}
}
g<<dp[1][n]<<'\n';
return 0;
}
