diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-02-12 15:55:21 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-02-12 15:55:21 +0800 |
commit | 10eb95869601e145b1d8bc909424777c25752d51 (patch) | |
tree | 49449a4076ded9bd937a51679318edbe2a532cae /works/life/2020-algorithm-contest/code/2.cpp | |
parent | 29ba3e88b1a7425fe00af0005b8a8228103aa21c (diff) | |
parent | f8c10dd1fc55e60f35286475356e48c4f642eb63 (diff) | |
download | crupest-10eb95869601e145b1d8bc909424777c25752d51.tar.gz crupest-10eb95869601e145b1d8bc909424777c25752d51.tar.bz2 crupest-10eb95869601e145b1d8bc909424777c25752d51.zip |
import(life): IMPORT crupest/life COMPLETE.
Diffstat (limited to 'works/life/2020-algorithm-contest/code/2.cpp')
-rw-r--r-- | works/life/2020-algorithm-contest/code/2.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/works/life/2020-algorithm-contest/code/2.cpp b/works/life/2020-algorithm-contest/code/2.cpp new file mode 100644 index 0000000..2d5fded --- /dev/null +++ b/works/life/2020-algorithm-contest/code/2.cpp @@ -0,0 +1,54 @@ +#include <iostream> +#include <map> +#include <vector> +#include <algorithm> + +int main() +{ + int size; + std::cin >> size; + int target; + std::cin >> target; + + std::map<int, int> nums; + + for (int i = 0; i < size; i++) + { + int v; + std::cin >> v; + + nums[v]++; + } + + std::vector<int> counts; + std::vector<std::vector<int>> sets; + + for (const auto &pair : nums) + { + auto iter = std::lower_bound(counts.cbegin(), counts.cend(), pair.second); + if (iter != counts.cend() && *iter == pair.second) + { + sets[iter - counts.cbegin()].push_back(pair.first); + } + else + { + const auto offset = iter - counts.cbegin(); + counts.insert(iter, pair.second); + sets.insert(sets.cbegin() + offset, std::vector<int>{pair.first}); + } + } + + if (target > counts.size()) + { + std::cout << 0; + } + else + { + const auto &set = sets[counts.size() - target]; + std::cout << set.size() << '\n'; + for (auto i : set) + std::cout << i << ' '; + } + + return 0; +} |