fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <bits/stdc++.h>
  5. #define SPEED ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0)
  6. using namespace std;
  7.  
  8. int helper(int x)
  9. {
  10. int mini = 1000, maxi = 0;
  11. while (x > 0)
  12. {
  13. mini = min(mini, x % 10);
  14. maxi = max(maxi, x % 10);
  15. x /= 10;
  16. }
  17. return maxi - mini;
  18. }
  19.  
  20. void seive(bool *prime)
  21. {
  22. int i, j;
  23. prime[0] = prime[1] = 0;
  24. for (i = 2; i <= 100000; i++)
  25. {
  26. if (prime[i] == 0)
  27. continue;
  28. for (j = 2 * i; j <= 100000; j += i)
  29. {
  30. prime[j] = 0;
  31. }
  32. }
  33. }
  34.  
  35. int main()
  36. {
  37. int test;
  38. SPEED;
  39. cin >> test;
  40. while (test-- > 0)
  41. {
  42. int n, m;
  43. cin >> n;
  44. vector<int> arr(n);
  45. map<int, set<int>> myMap;
  46. vector<vector<int>> res;
  47. set<int> Set;
  48. int i, j;
  49. for (i = 0; i < n; i++)
  50. {
  51. cin >> arr[i];
  52. myMap[arr[i]].insert(i);
  53. Set.insert(arr[i]);
  54. }
  55. for (i = 0; i < n; i++)
  56. {
  57. int x = *Set.begin();
  58. Set.erase(x);
  59. myMap[x].erase(i);
  60. if (x == arr[i])
  61. continue;
  62. int j = *myMap[x].begin();
  63. myMap[x].erase(j);
  64. res.push_back({i, j});
  65. res.push_back({j, i});
  66. res.push_back({i, j});
  67. myMap[arr[i]].insert(j);
  68. arr[j] = arr[i];
  69. arr[i] = x;
  70. }
  71. cout << res.size() << endl;
  72. for (i = 0; i < res.size(); i++)
  73. {
  74. cout << res[i][0] + 1 << " " << res[i][1] + 1 << endl;
  75. }
  76. }
  77. return 0;
  78. }
  79.  
Runtime error #stdin #stdout 0.83s 2095820KB
stdin
Standard input is empty
stdout
Standard output is empty