记录编号 |
601349 |
评测结果 |
AAAAAAAAAA |
题目名称 |
1697.人工湖 |
最终得分 |
100 |
用户昵称 |
对立猫猫对立 |
是否通过 |
通过 |
代码语言 |
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
}