Advertisement
Soupborsh

XOUR(WIP)

Apr 4th, 2025 (edited)
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <algorithm>
  2. #include <cstdio>
  3. #include <unordered_map>
  4. #include <vector>
  5. // #include <utility>
  6.  
  7. #define ULL unsigned long long
  8. #define LL long long
  9. #define uint unsigned int
  10. #define uchar unsigned int
  11.  
  12. bool comp(uint x, uint y) { return x > y; }
  13.  
  14. inline void thing(void) {
  15.   uint n;
  16.   scanf("%u", &n);
  17.   std::vector<uint> a(n);
  18.   std::unordered_map<uint, std::vector<uint>> map;
  19.   map.reserve(n);
  20.   for (uint i = 0; i < n; i++) {
  21.     scanf("%u", &a[i]);
  22.     map[a[i] >> 2].push_back(a[i]);
  23.   }
  24.  
  25.   for (auto &[i, vec] : map) {
  26.     std::sort(vec.begin(), vec.end(), comp);
  27.   }
  28.  
  29.   for (uint i = 0; i < n; i++) {
  30.     auto &v = map[a[i] >> 2];
  31.     if (!v.empty()) {
  32.       a[i] = v.back();
  33.       v.pop_back();
  34.     }
  35.     //a[i] = map[a[i] >> 2].back();
  36.     //map[a[i] >> 2].pop_back();
  37.   }
  38.  
  39.   for (uint i = 0; i < n; i++) {
  40.     printf("%u ", a[i]);
  41.   }
  42.   putchar('\n');
  43. }
  44.  
  45. int main(void) {
  46.   uint t;
  47.   scanf("%u", &t);
  48.   for (uint i = 0; i < t; i++) {
  49.     thing();
  50.   }
  51. }
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement