Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <functional>
- #include <algorithm>
- #include <vector>
- int main() {
- int pages_amount, book_size;
- std::cin >> pages_amount;
- std::vector<int> pages(pages_amount);
- for (int & page : pages) {
- std::cin >> page;
- }
- std::cin >> book_size;
- int ub = *std::max_element(pages.begin(), pages.end());
- std::vector<int> vol(book_size);
- std::function<bool(int, int)> foo = [&](int p, int q) {
- for (; p >= q && vol[q] + pages[p] <= ub; --p) vol[q] += pages[p];
- return !q ? p < q : foo(p, q - 1);
- };
- for (; !foo(pages_amount - 1, book_size - 1); ++ub) {
- vol.assign(book_size, 0);
- }
- std::cout << *std::max_element(vol.begin(), vol.end());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement