题目链接
思路类似于校门外的树那道题
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long ll;
const int N=100010;
int c1[N],c2[N];
int n,m;
int lowbit(int x){
return x&(-x);
}
void add1(int x,int y){
while(x<=n){
c1[x]+=y;
x+=lowbit(x);
}
}
void add2(int x,int y){
while(x<=n){
c2[x]+=y;
x+=lowbit(x);
}
}
int ask1(int x){
int res=0;
while(x>0){
res+=c1[x];
x-=lowbit(x);
}
return res;
}
int ask2(int x){
int res=0;
while(x>0){
res+=c2[x];
x-=lowbit(x);
}
return res;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int op,x,y;
scanf("%d",&op);
if(op==1){
scanf("%d%d",&x,&y);
add1(x,1);
add2(y,1);
}else{
scanf("%d",&x);
int t=ask1(x)-ask2(x-1);
if(t&1) printf("1\n");
else printf("0\n");
}
}
return 0;
}