记录编号 568137 评测结果 AAAAAAAAAA
题目名称 人工湖 最终得分 100
用户昵称 Gravatarnick 是否通过 通过
代码语言 C++ 运行时间 0.697 s
提交时间 2021-12-16 22:04:32 内存使用 4.55 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=100001;
int n,m,a,b,c,h,l[N],f[N],ex=0;
void lowbit(int x, int y)
{
	for(;x<=n;x+=x&(-x))f[x]+=y;
}
void add(int x,int y)
{
	if(y==0)y=-1;
	h+=y;
	lowbit(x,y);
	return;
}
int find(int x,int y)
{
	for(;x>0;x-=x&(-x))y+=f[x];
	return y;
}
int main()
{
	freopen("lakee.in","r",stdin);
	freopen("lakee.out","w",stdout);
	cin>>n>>m;
	n-=1;
	for(int i=1;i<=m;i++)
	{
		cin>>a>>b>>c;
		if(b<c)swap(b,c);
		b--;
		if(a)
		{
			a=find(b,0)-find(c-1,0);
			if(a&&h-a)cout<<"NO"<<endl;
			else cout<<"YES"<<endl;
		}
		else
		{
			if(b==n&&c==1)
			{
//				cout<<ex;
				if(ex==0)
				{
					h++;
					ex=1;
				}
				else 
				{
					h--;
					ex=0;
				}
//				cout<<" "<<h;
				continue;
			}
			l[c]^=1;
			add(c,l[c]);
		}
	}
	return 0;
}