Pagini recente » Cod sursa (job #438866) | Cod sursa (job #2632514) | Cod sursa (job #393882) | Cod sursa (job #1421085) | Cod sursa (job #1420935)
#include <fstream>
#include <vector>
#include <limits>
int main()
{
std::ifstream in("podm.in");
std::ofstream out("podm.out");
int N;
in >> N;
std::vector<int> dimensions(N + 1);
for (auto &elem : dimensions)
in >> elem;
std::vector<std::vector<long long> > M(N + 1, std::vector<long long>(N + 1, 0));
for (auto step = 1; step < N; step++)
for (auto i = 1; i <= N - step; i++) {
auto aux = std::numeric_limits<long long>::max();
auto j = i + step;
for (auto k = i; k < j; k++)
aux = std::min(
aux, M[i][k] + M[k + 1][j] + 1LL * dimensions[i - 1] * dimensions[k] * dimensions[j]);
M[i][j] = aux;
}
out << M[1][N] << '\n';
return 0;
}