Cod sursa(job #3274362)
| Utilizator | Data | 6 februarie 2025 15:46:13 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
const long long INF=LLONG_MAX;
vector <vector <long long>> dp(501, vector<long long>(501, INF));
long long dim[502];
int x, i, j, k, l, n;
int main(){
fin>>n;
for(int i=0;i<=n;i++){
fin>>dim[i];
dp[i][i]=0;
}
for(l=1;l<=n-1;l++){
for(i=1;i<=n-l;i++){
j=i+l;
for(int k=i;k<j;k++){
long long d=dp[i][k]+dp[k+1][j]+dim[i-1]*dim[k]*dim[j];
if(d<dp[i][j]) dp[i][j]=d;
}
}
}
fout<<dp[1][n];
return 0;
}
