From 96254947699986c59f0dc63d69fd4b76bd3ed43e Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Mon, 6 Jul 2026 19:08:08 +0200 Subject: Initial commit --- .../collecting_numbers_2216.cpp | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 02_sorting_and_searching/collecting_numbers_2216.cpp (limited to '02_sorting_and_searching/collecting_numbers_2216.cpp') diff --git a/02_sorting_and_searching/collecting_numbers_2216.cpp b/02_sorting_and_searching/collecting_numbers_2216.cpp new file mode 100644 index 0000000..1adcf28 --- /dev/null +++ b/02_sorting_and_searching/collecting_numbers_2216.cpp @@ -0,0 +1,46 @@ +#include +#include + +int main() { + size_t n, x, s{1}, l{0}; + std::cin >> n; + std::vector b(n); + for (size_t i = 0; i < n; i++) { + std::cin >> x; + b[x-1] = i; + } + for (size_t i = 0; i < n; i++) { + s += b[i] < l; + l = b[i]; + } + std::cout << s << "\n"; +} + + +// The code below solves a different problem: it finds the minimum number +// of ascending chains needed to partition the given list of numbers. + +#if 0 + +#include +#include +#include + +int main() { + size_t n; + std::vector s; + std::cin >> n; + for (size_t i = 0; i < n; i++) { + size_t x; + std::cin >> x; + auto it = std::lower_bound( + s.begin(), s.end(), x, std::greater()); + if (it != s.end()) + *it = x; + else + s.push_back(x); + } + std::cout << s.size() << std::endl; +} + +#endif -- cgit v1.3