Mradul_22

Untitled

Sep 13th, 2025 (edited)
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.44 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #ifdef INSANE
  5. #include "debug.h"
  6. #else
  7. #define dbg(x...)
  8. #endif
  9.  
  10. #define Buildup() ios::sync_with_stdio(false), cin.tie(nullptr)
  11.  
  12. #define make_unique(x) (x).resize(unique(all(x)) - x.begin())
  13. #define rotate(x, k) rotate(x.begin(), x.begin() + k, x.end())
  14. #define all(x) (x).begin(), (x).end()
  15. #define rall(x) (x).rbegin(), (x).rend()
  16. #define sz(x) (int)(x).size()
  17. #define PI 3.14159265358979323846
  18. #define ld long double
  19. #define ull unsigned long long
  20. #define ll long long
  21. #define nl '\n'
  22. #define ff first
  23. #define ss second
  24. #define pb push_back
  25. #define pp pop_back
  26. #define ins insert
  27. #define lb lower_bound
  28. #define ub upper_bound
  29. #define pr pair
  30.  
  31. #define Nl '\n'
  32. #define itn int
  33.  
  34. // constexpr int M = 1E9+7;  //998244353
  35. // constexpr int N = 1E5+5;
  36.  
  37. constexpr int inf = 1E9;
  38.  
  39.  
  40. /* .....!! Start by doing what's necessary; then do what's possible;
  41.                             and suddenly you are doing impossible !!..... */
  42.  
  43. int main(){
  44.     #ifdef INSANE
  45.         freopen("errorf.in", "w", stderr);
  46.     #endif
  47.  
  48.     Buildup();
  49.  
  50.         int ___ = 1;
  51.         cin >> ___;
  52.  
  53.         while(___--){
  54.  
  55.             string s;
  56.             cin>>s;
  57.  
  58.             int n = sz(s);
  59.             s += s[n-1];
  60.  
  61.             vector<array<int, 2>> seg;
  62.             queue<int> q[2];
  63.             int st = s[0]-'0', c = 0;
  64.             for(int i=0; i<n; i++){
  65.                 if(s[i] == s[i+1]){
  66.                     seg.pb({st, s[i]-'0'});
  67.                     q[st].push(c++);
  68.                     st = s[i]-'0';
  69.                 }
  70.             }
  71.  
  72.             // for(int i=0; i<2; i++){
  73.             //     while(!q[i].empty()){
  74.             //         cout<<q[i].front()<<" ";
  75.             //         q[i].pop();
  76.             //     }
  77.             //     cout<<nl;
  78.             // }
  79.  
  80.             vector<int> vis(c);
  81.             int ans = 0;
  82.             for(int i=0; i<c; i++){
  83.                 if(vis[i]) continue;
  84.                 ans += 1;
  85.                 vis[i] = 1;
  86.                 auto [l, r] = seg[i];
  87.                 q[l].pop();
  88.                 int cp = i;
  89.                 while(!q[r^1].empty()){
  90.                     int nxt = q[r^1].front();
  91.                     if(nxt < cp) break;
  92.                     cp = nxt;
  93.                     q[r^1].pop();
  94.                     vis[cp] = 1;
  95.                     r = seg[cp][1];
  96.                 }
  97.             }
  98.             cout<<ans<<nl;
  99.  
  100.         }
  101.  
  102. }
Tags: C++
Advertisement
Add Comment
Please, Sign In to add comment