➤ Problem Link : LITE
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; int st[400000]; int lazy[400000]; void propagateLazy(int ind,int l,int r) { if(l!=r) { lazy[2*ind+1]=(lazy[2*ind+1]+1)%2; lazy[2*ind+2]=(lazy[2*ind+2]+1)%2; } st[ind]=(r-l+1)-st[ind]; lazy[ind]=0; } void update(int ind,int l,int r,int ql,int qr) { if(lazy[ind]) propagateLazy(ind,l,r); if(r<ql || l>qr) return; if(ql<=l && r<=qr) { lazy[ind]=1; propagateLazy(ind,l,r); return; } int m=(l+r)/2; update(2*ind+1,l,m,ql,qr); update(2*ind+2,m+1,r,ql,qr); st[ind]=st[2*ind+1]+st[2*ind+2]; } int query(int ind,int l,int r,int ql,int qr) { if(lazy[ind]) propagateLazy(ind,l,r); if(r<ql || l>qr) return 0; if(ql<=l && r<=qr) return st[ind]; int m=(l+r)/2; return query(2*ind+1,l,m,ql,qr)+query(2*ind+2,m+1,r,ql,qr); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n,m,l,r,i; cin>>n>>m; memset(lazy,0,sizeof(lazy)); while(m--) { cin>>i>>l>>r; if(i==0) update(1,1,n,l,r); else { cout<<query(1,1,n,l,r)<<endl; } } }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!