diff options
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, 0 insertions, 54 deletions
diff --git a/works/life/2020-algorithm-contest/code/2.cpp b/works/life/2020-algorithm-contest/code/2.cpp deleted file mode 100644 index 2d5fded..0000000 --- a/works/life/2020-algorithm-contest/code/2.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#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; -} |