#include <bits/stdc++.h>
using namespace std;
#define lc id<<1
#define rc lc|1
#define mid ((l+r)>>1)
const int MXN = 2e5+5;
int n, a[MXN];
struct {
int seg[MXN<<2];
void upd(int i, int x, int l=1, int r=n+1, int id=1) {
if(r-l == 1) {
seg[id] = x;
return;
}
i<mid ? upd(i, x, l, mid, lc) : upd(i, x, mid, r, rc);
seg[id] = seg[lc]^seg[rc];
}
int get(int s, int e, int l=1, int r=n+1, int id=1) {
if(s>=r || l>=e) return 0;
if(s<=l && r<=e) return seg[id];
return get(s, e, l, mid, lc) ^ get(s, e, mid, r, rc);
}
} seg[2];
int q;
int32_t main() {
cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
cin >> n >> q;
for(int i=1; i<=n; i++) {
cin >> a[i];
seg[i&1].upd(i, a[i]);
}
while(q--) {
int t;
cin >> t;
if(t==1) {
int i, x;
cin >> i >> x;
seg[i&1].upd(i, x);
}
else {
int l, r;
cin >> l >> r;
cout << ((l&1)==(r&1) ? seg[l&1].get(l, r+1) : 0) << '\n';
}
}
return 0;
}
| # | 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... |