Pagini recente » Cod sursa (job #734052) | Cod sursa (job #3190570) | Cod sursa (job #1246424) | Cod sursa (job #3288470) | Cod sursa (job #2260245)
#include <bits/stdc++.h>
using namespace std;
int dp[501][501], values[501], n;
int main() {
ifstream f("podm.in");
ofstream g("podm.out");
f >> n;
for (int i = 0; i <= n; ++i){
f >> values[i];
}
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n; ++j){
dp[i][j] = (1 << 29);
}
}
for (int i = 1; i <= n; i++){
dp[i][i] = 0;
}
for (int i = 1; i <= n - 1; i++){
dp[i][i + 1] = values[i - 1] * values[i] * values[i + 1];
}
for (int k = 2; k < n; ++k){
for (int i = 1; i <= n - k; ++i){
int j = i + k;
for (int p = i; p < j; ++p){
dp[i][j] = min(dp[i][j], dp[i][p] + dp[p + 1][j] + values[i - 1] * values[p] * values[j]);
}
}
}
g << dp[1][n];
return 0;
}