Pagini recente » Cod sursa (job #17899) | Cod sursa (job #860047) | Cod sursa (job #1629646) | Cod sursa (job #1003097) | Cod sursa (job #2260248)
#include <bits/stdc++.h>
using namespace std;
long long 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] = (1LL << 60);
}
}
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;
}