Cod sursa(job #2504328)
| Utilizator | Data | 4 decembrie 2019 20:07:12 | |
|---|---|---|---|
| Problema | Parantezare optima de matrici | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.58 kb |
#include <fstream>
using namespace std;
const int maxN=505;
const long long INF=(1LL<<60);
int n;
long long v[maxN];
long long dp[maxN][maxN];
int main(){
ifstream f("podm.in");
ofstream g("podm.out");
f>>n;
for(int i=1;i<=n+1;i++){
f>>v[i];
}
for(int i=n;i>=1;i--){
for(int j=i+1;j<=n;j++){
long long val=INF;
for(int k=i;k<j;k++){
val=min(val,dp[i][k]+dp[k+1][j]+v[i]*v[k+1]*v[j+1]);
}
dp[i][j]=val;
}
}
g<<dp[1][n];
return 0;
}