aboutsummaryrefslogtreecommitdiff
path: root/works/life/2020-algorithm-contest/code/2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'works/life/2020-algorithm-contest/code/2.cpp')
-rw-r--r--works/life/2020-algorithm-contest/code/2.cpp54
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;
-}