Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <cstdio>
- #include <unordered_map>
- #include <vector>
- // #include <utility>
- #define ULL unsigned long long
- #define LL long long
- #define uint unsigned int
- #define uchar unsigned int
- bool comp(uint x, uint y) { return x > y; }
- inline void thing(void) {
- uint n;
- scanf("%u", &n);
- std::vector<uint> a(n);
- std::unordered_map<uint, std::vector<uint>> map;
- map.reserve(n);
- for (uint i = 0; i < n; i++) {
- scanf("%u", &a[i]);
- map[a[i] >> 2].push_back(a[i]);
- }
- for (auto &[i, vec] : map) {
- std::sort(vec.begin(), vec.end(), comp);
- }
- for (uint i = 0; i < n; i++) {
- auto &v = map[a[i] >> 2];
- if (!v.empty()) {
- a[i] = v.back();
- v.pop_back();
- }
- //a[i] = map[a[i] >> 2].back();
- //map[a[i] >> 2].pop_back();
- }
- for (uint i = 0; i < n; i++) {
- printf("%u ", a[i]);
- }
- putchar('\n');
- }
- int main(void) {
- uint t;
- scanf("%u", &t);
- for (uint i = 0; i < t; i++) {
- thing();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement