Snapper_001

Untitled

Mar 19th, 2023
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include<ext/pb_ds/assoc_container.hpp>
  3. #include<ext/pb_ds/tree_policy.hpp>
  4. using namespace __gnu_pbds;
  5. using namespace std;
  6. #define IO ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
  7. #define pb push_back
  8. #define all(x) (x).begin(),(x).end()
  9. #define ll long long
  10. #define ull unsigned long long
  11. #define ld long double
  12. #define eps 1e-9
  13. #define sz(a) (ll)(a).size()
  14. #define ppc __builtin_popcount
  15. #define ppcll __builtin_popcountll
  16. #define mem1(a) memset(a,-1,sizeof(a))
  17. #define mem0(a) memset(a,0,sizeof(a))
  18. #define endl "\n"
  19. #define lb lower_bound
  20. #define ub upper_bound
  21. template<class T> using ordered_set = tree<T, null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
  22. template<class T> using ordered_multiset = tree<T, null_type,less_equal<T>,rb_tree_tag,tree_order_statistics_node_update>;
  23. const ld PI = acos(-1.0);
  24. const int MOD = 1e9 +7;
  25. const ll INF = 1e18;
  26. // if(abs(a-b)<eps) --> if(a==b)
  27. // fixed << setprecision(n) -->printing decimal till n
  28. // hypot(a ,b) --> sqrt(a^2 + b^2)
  29.  
  30. void solve(){
  31. int n; cin>>n;
  32. vector<int> a(n);
  33. for(int i=0;i<n;i++) cin>>a[i];
  34. set<pair<int,int>> s;
  35. for(int i=0;i<n;i++){
  36. s.insert({a[i],i});
  37. }
  38. vector<pair<int,int>> ans;
  39. int want =0;
  40. while(!s.empty()){
  41. int val = s.begin()->first;
  42. int ind_old = s.begin()->second;
  43. if(want==ind_old){
  44. s.erase(s.begin());
  45. want++;
  46. continue;
  47. }
  48. s.erase(s.begin());
  49. s.erase(s.find({a[want],want}));
  50. s.insert({a[want] , ind_old});
  51. ans.push_back({want , ind_old});
  52. swap(a[want] , a[ind_old]);
  53. want++;
  54. }
  55. cout<<3*ans.size()<<endl;
  56. for(auto& it: ans){
  57. int i = it.first+1;
  58. int j = it.second+1;
  59. cout<<i<<" "<<j<<endl;
  60. cout<<j<<" "<<i<<endl;
  61. cout<<i<<" "<<j<<endl;
  62. }
  63.  
  64. }
  65.  
  66. int main(){
  67. IO;
  68. ll t =1;
  69. cin>>t;
  70. for(int i=1;i<=t;i++){
  71. // cout<<"Case #"<<i<<": ";
  72. solve();
  73. }
  74. return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment