找不到问题了,求大佬帮助
#include <bits/stdc++.h>
using namespace std;
const int N = 110000;
int n, m;
int id, x, y;
int a[N];
struct Tree {
int l, r;
int lz;
} tree[N << 2];
inline void push_down(int u) {
if (!tree[u].lz) return ;
tree[u << 1].lz ^= 1;
tree[u << 1 | 1].lz ^= 1;
if (tree[u << 1].l == tree[u << 1].r) a[tree[u << 1].l] ^= 1;
if (tree[u << 1 | 1].l == tree[u << 1 | 1].r) a[tree[u << 1 | 1].l] ^= 1;
tree[u].lz = 0;
}
inline void build(int u, int l, int r) {
tree[u].l = l, tree[u].r = r;
if (l == r) {
return ;
}
int mid = l + r >> 1;
build(u << 1, l, mid);
build(u << 1 | 1, mid + 1, r);
}
inline void chg(int u, int l, int r) {
if (l <= tree[u].l && tree[u].r <= r) {
if (tree[u].l == tree[u].r) a[tree[u].l] ^= 1;
else tree[u].lz ^= 1;
return ;
}
if (tree[u].r < l || tree[u].l < r) return ;
push_down(u);
if (l <= tree[u << 1].r) chg(u << 1, l, r);
if (tree[u << 1 | 1].l <= r) chg(u << 1 | 1, l, r);
}
inline int search(int u, int id) {
if (tree[u].l == tree[u].r) {
return a[tree[u].l];
}
push_down(u);
if (id <= tree[u << 1].r) search(u << 1, id);
else search(u << 1 | 1, id);
}
signed main() {
scanf("%d%d", &n, &m);
build(1, 1, n);
for (int i = 1; i <= m; i++) {
scanf("%d", &id);
if (id == 1) {
scanf("%d%d", &x, &y);
chg(1, x, y);
} else {
scanf("%d", &x);
printf("%d\n", search(1, x));
}
}
return 0;
}
/*
20 10
1 1 5
1 2 6
2 2
*/