| 比赛 | 
    树状数组练习 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    人工湖 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    zjzhe | 
    运行时间 | 
    0.843 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    3.85 MiB  | 
    | 提交时间 | 
    2025-06-12 15:23:48 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,m,val[N<<1];
void add(int x,int v){for(;x<=n<<1;x+=x&-x)val[x]+=v;}
int query(int x){
	int res=0;
	for(;x;x-=x&-x)res+=val[x];
	return res;
}
int main(){
	freopen("lakee.in","r",stdin);
	freopen("lakee.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int f,a,b;cin>>f>>a>>b;
		if(a>b)swap(a,b); 
		if(f==0){
			int t=query(a)-query(a-1);
			if(t)add(a,-1),add(a+n,-1);
			else add(a,1),add(a+n,1);
		}else {
			int t=(query(b-1)-query(a-1)==0)||(query(a+n-1)-query(b-1)==0)||(query(b+n-1)-query(a+n-1)==0);
			if(t)cout<<"YES"<<'\n';
			else cout<<"NO"<<'\n';
		}
	}
	
	return 0;
}