#include <bits/stdc++.h>
#define pb push_back
#define SS ios_base::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr);
#define int long long
#define all(v) v.begin(),v.end()
using namespace std;
const int N = 2e5 + 7, inf = 1e9 + 1, mod = 998244353;
int t[4 * N][2];
void upd(int v, int tl, int tr, int pos, int x){
if(tl == tr){
t[v][pos % 2] = x;
return;
}
int mid = (tl + tr) / 2;
if(mid >= pos) upd(v * 2, tl, mid, pos, x);
else upd(v * 2 + 1, mid + 1, tr, pos, 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 get(int v, int tl, int tr, int l, int r, int tp){
if(tl > r || l > tr) return 0;
if(tl >= l && r >= tr) return t[v][tp];
int mid = (tl + tr) / 2;
return get(v * 2, tl, mid, l, r, tp) ^ get(v * 2 + 1, mid + 1, tr, l, r, tp);
}
void solve(){
int n, q;
cin >> n >> q;
int a[n + 1];
for(int i = 1; i <= n; i++){
cin >> a[i];
upd(1, 1, n, i, a[i]);
}
while(q--){
int t;
cin >> t;
if(t == 1){
int i, x;
cin >> i >> x;
upd(1, 1, n, i, x);
}
else{
int l, r;
cin >> l >> r;
if(l % 2 == r % 2){
cout << get(1, 1, n, l, r, (l % 2)) << '\n';
}
else{
cout << get(1, 1, n, l, r, 1 - (l % 2)) << '\n';
}
}
}
}
signed main(){
SS
// freopen("trains.in", "r", stdin);
// freopen("trains.out", "w", stdout);
int t = 1;
// cin >> t;
while(t--){
solve();
}
}
| # | 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... |