Beingamanforever

Sukarako's Field Trip

Nov 20th, 2024
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.26 KB | None | 0 0
  1.  
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count());
  5. #define NeedForSpeed                  \
  6.     ios_base::sync_with_stdio(false); \
  7.     cin.tie(NULL);                    \
  8.     cout.tie(NULL);
  9. #define int long long
  10. #define all(x) (x).begin(), (x).end()
  11. typedef vector<int> vi;
  12. typedef vector<bool> vb;
  13. typedef vector<vi> vvi;
  14. typedef vector<pair<int, int>> vpi;
  15. #define f first
  16. #define s second
  17. #define endl "\n"
  18. const int mod = 1000000007;
  19. int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
  20. void solve()
  21. {
  22.     int n;
  23.     cin >> n;
  24.     vi a(n);
  25.     for (int i = 0; i < n; i++)
  26.     {
  27.         cin >> a[i];
  28.     }
  29.     deque<int> v;
  30.     if (n % 2 == 1)
  31.     {
  32.         // Odd case
  33.         v.push_back(a[n / 2]);
  34.         for (int i = 1; i <= n / 2; i++)
  35.         {
  36.             if (v.front() == a[n / 2 - i])
  37.             {
  38.                 v.push_back(a[n / 2 - i]);
  39.                 v.push_front(a[n / 2 + i]);
  40.             }
  41.             else if (v.back() == a[n / 2 + i])
  42.             {
  43.                 v.push_back(a[n / 2 - i]);
  44.                 v.push_front(a[n / 2 + i]);
  45.             }
  46.             else
  47.             {
  48.                 v.push_back(a[n / 2 + i]);
  49.                 v.push_front(a[n / 2 - i]);
  50.             }
  51.         }
  52.     }
  53.     else
  54.     {
  55.         // Even case
  56.         v.push_back(a[n / 2]);
  57.         v.push_back(a[n / 2 - 1]);
  58.         for (int i = 1; i < n / 2; i++)
  59.         {
  60.             if (v.front() == a[n / 2 - 1 - i])
  61.             {
  62.                 v.push_back(a[n / 2 - 1 - i]);
  63.                 v.push_front(a[n / 2 + i]);
  64.             }
  65.             else if (v.back() == a[n / 2 + i])
  66.             {
  67.                 v.push_back(a[n / 2 - 1 - i]);
  68.                 v.push_front(a[n / 2 + i]);
  69.             }
  70.             else
  71.             {
  72.                 v.push_back(a[n / 2 + i]);
  73.                 v.push_front(a[n / 2 - 1 - i]);
  74.             }
  75.         }
  76.     }
  77.     int cnt = 0;
  78.     for (int i = 0; i < n - 1; i++)
  79.     {
  80.         if (v[i] == v[i + 1])
  81.         {
  82.             cnt++;
  83.         }
  84.     }
  85.     cout << cnt << endl;
  86. }
  87.  
  88. signed main()
  89. {
  90.     NeedForSpeed;
  91.     int t = 1;
  92.     cin >> t;
  93.     while (t--)
  94.     {
  95.         solve();
  96.     }
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment