#include <bits/stdc++.h>
#define intt long long
using namespace std;
const int N = 2e5 + 1;
int t[4 * N][2];
void upd(int v, int l, int r, int i, int x) {
if (l == r) {
t[v][l & 1] = x;
return;
}
int m = (l + r) / 2;
if (i <= m) {
upd(v * 2, l, m, i, x);
} else {
upd(v * 2 + 1, m + 1, r, i, x);
}
t[v][0] = t[v * 2][0] ^ t[v * 2 + 1][0];
t[v][1] = t[v * 2][1] ^ t[v * 2 + 1][1];
}
int ask(int v, int l, int r, int ql, int qr) {
if (ql <= l and r <= qr) {
return t[v][ql & 1];
}
int m = (l + r) / 2, res = 0;
if (ql <= m) {
res ^= ask(v * 2, l, m, ql, qr);
}
if (m < qr) {
res ^= ask(v * 2 + 1, m + 1, r, ql, qr);
}
return res;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(nullptr);
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
upd(1, 1, n, i, x);
}
while (q--) {
int tp;
cin >> tp;
if (tp == 1) {
int i, x;
cin >> i >> x;
upd(1, 1, n, i, x);
} else {
int l, r;
cin >> l >> r;
if ((r - l) & 1) {
cout << "0\n";
} else {
cout << ask(1, 1, n, l, r) << '\n';
}
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |