fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. mt19937_64 rd(time(0));
  5. int rand(int L, int R){
  6. return L + rd() % (R - L + 1);
  7. }
  8.  
  9. int n, arr[10000];
  10.  
  11. int random_bit(int i, int j){
  12. int bit_arr[7] = {(i ^ j), (i & j), (i | j), (i & -i), (j & -j), (i & -j), (-i & j)};
  13. return bit_arr[rand(0, 100) % 7];
  14. }
  15.  
  16. void bitwise_sort(){
  17. for(int i = 0; i < n; i++){
  18. for(int j = 0; j < n; j++){
  19. int minIndex = i - random_bit(i, j);
  20. int maxIndex = i + random_bit(i, j);
  21.  
  22. minIndex = max(0, minIndex);
  23. minIndex = min(n - 1, minIndex);
  24.  
  25. maxIndex = max(0, maxIndex);
  26. maxIndex = min(n - 1, maxIndex);
  27.  
  28. if(arr[minIndex] < arr[maxIndex]) swap(arr[minIndex], arr[maxIndex]);
  29. }
  30. }
  31. }
  32.  
  33. bool isSorted(int* arr, int length){
  34. for(int i = 1; i < length; i++){
  35. if(arr[i - 1] < arr[i]) return 0;
  36. }
  37.  
  38. return 1;
  39. }
  40.  
  41. int main(){
  42. ios_base::sync_with_stdio(0);
  43. cin.tie(0); cout.tie(0);
  44.  
  45. cin >> n;
  46. for(int i = 0; i < n; i++) cin >> arr[i];
  47.  
  48. while(!isSorted(arr, n)){
  49. bitwise_sort();
  50. }
  51.  
  52. for(int i = 0; i < n; i++) cout << arr[i] << ' ';
  53.  
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
Standard output is empty