#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+7;
int n,m;
int a[maxn];
int sum[maxn*4];
int tap[maxn*4];
void down(int l,int r,int p){
int mid=(l+r)>>1;
if(tap[p]){
sum[p*2]=(l-mid+1)-sum[p*2];
tap[p*2]^=1;
sum[p*2+1]=(r-mid)-sum[p*2+1];
tap[p*2+1]^=1;
tap[p]=0;
}
return ;
}
void xg(int cl,int cr,int l,int r,int p){
if(cl<=l&&r<=cr){
sum[p]=(r-l+1)-sum[p];
tap[p]^=1;
return ;
}
int mid=(l+r)>>1;
down(l,r,p);
if(cl<=mid){
xg(cl,cr,l,mid,p*2);
}
if(mid<cr){
xg(cl,cr,mid+1,r,p*2+1);
}
sum[p]=sum[p*2]+sum[p*2+1];
return ;
}
int find(int cl,int cr,int l,int r,int p){
int res=0;
if(cl<=l&&r<=cr){
return sum[p];
}
int mid=(l+r)>>1;
down(l,r,p);
if(cl<=mid){
res+=find(cl,cr,l,mid,p*2);
}
if(mid<cr){
res+=find(cl,cr,mid+1,r,p*2+1);
}
return res;
}
int main(){
cin>>n>>m;
while(m--){
int qwq,a,b;
cin>>qwq>>a>>b;
if(!qwq){
xg(a,b,1,n,1);
}
else{
cout<<find(a,b,1,n,1)<<endl;
}
}
return 0;
}
ac#2
已经翻了讨论区
调了2h
想死