比赛 EYOI常规赛 2nd 评测结果 AAAAAAAAAA
题目名称 人工湖 最终得分 100
用户昵称 ZRQ 运行时间 0.045 s
代码语言 C++ 内存使用 3.11 MiB
提交时间 2021-12-16 21:36:20
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,t[100005];
bool vis[100005];
char ch;
inline void read(int &x){x=0;ch=getchar();while(ch<48||ch>57) ch=getchar();while(ch>47&&ch<58) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();}
void add(int i,int k){while(i<=n-1) t[i]+=k,i+=i&-i;}
int ask(int i)
{
	int res=0;
	while(i>0) res+=t[i],i-=i&-i; 
	return res;
}
int main()
{
	freopen("lakee.in","r",stdin);
	freopen("lakee.out","w",stdout);
	int f,a,b;
	read(n);read(m);
	for(int i=1;i<=m;++i)
	{
		read(f),read(a),read(b);
		if(a>b) swap(a,b);
		if(!f)
		{
			if(a==1&&b==n) vis[n]=1-vis[n];
			else
			{
				if(!vis[a]) add(a,1);
				else add(a,-1);
				vis[a]=1-vis[a];
			}
		}
		else
		{
			if((vis[b-1]||ask(b-1)-ask(a-1))&&(ask(a-1)||ask(n-1)-ask(b-1)||vis[n])) printf("NO\n");
			else printf("YES\n");
		}
	}
	return 0;
}