Pagini recente » Cod sursa (job #2180371) | Cod sursa (job #497724) | Cod sursa (job #3124159) | Cod sursa (job #1028139) | Cod sursa (job #1390671)
#include <iostream>
#include <fstream>
#include <vector>
#include <limits>
int main()
{
std::ifstream fin{"podm.in"};
std::ofstream fout{"podm.out"};
int N;
fin >> N;
std::vector<int> dims(N + 1);
for (auto &elem : dims)
fin >> elem;
std::vector<std::vector<long long>> M(N + 1, std::vector<long long>(N + 1, 0));
for (auto d = 1; d < N; ++d)
for (auto i = 1; i + d <= N; ++i) {
auto minn = std::numeric_limits<long long>::max();
for (auto k = i; k < i + d; ++k)
minn = std::min(
minn, M[i][k] + M[k+1][i+d] + 1LL* dims[i-1]*dims[k]*dims[i+d]);
M[i][i+d] = minn;
}
fout << M[1][N] << std::endl;
return 0;
}