记录编号 601349 评测结果 AAAAAAAAAA
题目名称 1697.人工湖 最终得分 100
用户昵称 Gravatar对立猫猫对立 是否通过 通过
代码语言 C++ 运行时间 0.208 s
提交时间 2025-06-16 20:16:23 内存使用 4.33 MiB
显示代码纯文本
#include <bits/stdc++.h>
#define Tairitsu return 0;
#define lowbit(x) (x & -x)
#define ll long long
using namespace std;
ll n, m;
ll f, a, b;
ll road[1000005], def[1000005];
void add(ll x, ll y) {
	for (; x <= n; x += lowbit(x)) road[x] += y;
}
ll ask(ll x) {
	ll ans = 0;
	for (; x; x -= lowbit(x)) ans += road[x];
	return ans;
}
int main() {
	freopen("lakee.in","r",stdin);
	freopen("lakee.out","w",stdout);
	scanf("%lld %lld", &n, &m);
	for (int i = 1; i <= n; i++) {
		add(i, 1);
		def[i] = 1;
	}
	for (int i = 1; i <= m; i++) {
		scanf("%lld %lld %lld", &f, &a, &b);
		if(a > b) swap(a,b);
		if(f == 0)
		{
			if (def[a]) add(a, -1), def[a] = 0;
			else add(a, 1), def[a] = 1;
		}
		else
		{
			ll dist1 = ask(b - 1) - ask(a - 1);
			ll dist2 = ask(n) - ask(b - 1) + ask(a - 1);
			if (dist1 != b - a && dist2 != n - b + a) printf("NO\n");
			else printf("YES\n");
		}
	}
	Tairitsu
}