代码如下:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[500050],id[500050],f[500050],opt,l,r,c,v;
void add(int ll,int rr){
int sid=id[ll],eid=id[rr];
for(int i=ll;i<=min(sid*v,rr);i++){
if(a[i]==0) a[i]=1;
else a[i]=0;
}
if(sid!=eid)
for(int i=(eid-1)*v+1;i<=rr;i++){
if(a[i]==0) a[i]=1;
else a[i]=0;
}
for(int i=sid+1;i<=eid-1;i++) f[i]=v-f[i];
return;
}
int fi(int ll,int rr,int num){
int sid=id[ll],eid=id[rr];
for(int i=ll;i<=min(rr,sid*v);i++) if(a[i]==1) num++;
if(sid!=eid) for(int i=(eid-1)*v+1;i<=rr;i++) if(a[i]==1) num++;
for(int i=sid+1;i<=eid-1;i++) num+=f[i];
return num;
}
signed main(){
cin>>n>>m;
v=sqrt(n);
for(int i=1;i<=n;i++) a[i]=0;
for(int i=1;i<=n;i++){
id[i]=(i-1)/v+1;
}
for(int i=1;i<=m;i++){
cin>>opt>>l>>r;
if(opt==0) add(l,r);
else cout<<fi(l,r,0)<<endl;
}
return 0;
}