Pagini recente » Cod sursa (job #2326699) | Cod sursa (job #1256021) | Cod sursa (job #1671515) | Cod sursa (job #704103) | Cod sursa (job #1378506)
#include <fstream>
using namespace std;
const long long kInf = (1LL << 60);
const int kNMax = 505;
int n;
long long dp[kNMax][kNMax], v[kNMax];
void Citire() {
ifstream in("podm.in");
in >> n;
for (int i = 0; i <= n; ++i)
in >> v[i];
in.close();
}
void Solve() {
for (int i = 1; i <= n - 1; ++i)
dp[i][i + 1] = v[i - 1] * v[i] * v[i + 1];
for (int i = 2; i <= n - 1; ++i)
for (int j = 1; j <= n - i; ++j) {
int c = i + j;
dp[j][c] = kInf;
for (int k = j; k <= c - 1; ++k)
dp[j][c] = min(dp[j][c], dp[j][k] + dp[k + 1][c] + v[j - 1] * v[k] * v[c]);
}
}
void Afisare() {
ofstream out ("podm.out");
out << dp[1][n] << '\n';
out.close();
}
int main() {
Citire();
Solve();
Afisare();
return 0;
}