Advertisement
Korotkodul

CF C

Sep 19th, 2022 (edited)
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. #include <string>
  7. #include <stack>
  8. #include <set>
  9. #include <map>
  10. #define pii pair <int,int>
  11. #define pb(x) push_back(x)
  12. using namespace std;
  13. using ll = long long;
  14. using ld = long double;
  15. using db = double;
  16. void cv(vector <int> &v){
  17.     for (auto x: v) cout<<x<<' ';
  18.     cout<<"\n";
  19. }
  20.  
  21. void cvl(vector <ll> &v){
  22.     for (auto x: v) cout<<x<<' ';
  23.     cout<<"\n";
  24. }
  25.  
  26.  
  27. void cvv(vector <vector <int> > &v){
  28.     for (auto x: v) cv(x);
  29.     cout<<"\n";
  30. }
  31.  
  32. void cvb(vector <bool> v){
  33.     for (bool x: v) cout<<x<<' ';
  34.     cout<<"\n";
  35. }
  36.  
  37. void cvs(vector <string>  v){
  38.     for (auto a: v){
  39.         cout<<a<<"\n";
  40.     }
  41. }
  42.  
  43. void cvp(vector <pii> a){
  44.     for (auto p: a){
  45.         cout<<p.first+1<<' '<<p.second+1<<"\n";
  46.     }
  47.     //cout<<"\n";
  48. }
  49. int t=1,n;
  50. bool sh=0;
  51. vector <pii> ans;
  52. bool gr(vector <int> a){
  53.     for (int i = 1; i < a.size();++i){
  54.         if (a[i] < a[i-1]) return 0;
  55.     }
  56.     return 1;
  57. }
  58.  
  59. void left(vector <int> &a){
  60.     for (int i = n - 1; i >= 1; --i){
  61.         if ((a[i] + a[i - 1]) % 2 == 0){
  62.             a[i - 1] = a[i];
  63.             ans.push_back({i-1,i});
  64.         }
  65.     }
  66. }
  67.  
  68. void right(vector <int> &a){
  69.     for (int i = 0; i < n - 1; ++i){
  70.         if ((a[i] + a[i+1]) % 2 == 1){
  71.             a[i + 1] = a[i];
  72.             ans.push_back({i,i+1});
  73.         }
  74.     }
  75. }
  76.  
  77. int main()
  78. {
  79.     ios::sync_with_stdio(0);
  80.     cin.tie(0);
  81.     cout.tie(0);
  82.  
  83.     if (!sh) cin>>t;
  84.  
  85.     for (int go = 0; go < t; ++go){
  86.         cin>>n;
  87.         ans.clear();
  88.         vector <int> a(n); for (int &i: a) cin>>i;
  89.  
  90.         while (!gr(a)){
  91.             left(a);
  92.             right(a);
  93.         }
  94.         cout<<ans.size()<<"\n";
  95.         cvp(ans);
  96.     }
  97. }
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement