#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
#define MASK(i) (1LL << (i))
#define int long long
const int inf = 2e9;
const int mod = 3e4 + 13;
const int N = 2.5e5 + 5;
const int b = 1500;
void ckmax(int& f, int s)
{
f = (f > s ? f : s);
}
void ckmin(int& f, int s)
{
f = (f < s ? f : s);
}
int st[2][1 << 19] = {};
void update(int p, int pos, int val, int id = 1, int l = 1, int r = 1 << 18)
{
if (pos < l || pos > r) return;
if (l == r)
{
st[p][id] = val;
return;
}
int mid = (l + r) >> 1;
update(p, pos, val, id << 1, l, mid);
update(p, pos, val, id << 1 | 1, mid + 1, r);
st[p][id] = st[p][id << 1] ^ st[p][id << 1 | 1];
}
int get(int p, int u, int v, int id = 1, int l = 1, int r = 1 << 18)
{
if (r < u || l > v) return 0;
if (l >= u && r <= v) return st[p][id];
int mid = (l + r) >> 1;
return get(p, u, v, id << 1, l, mid) ^ get(p, u, v, id << 1 | 1, mid + 1, r);
}
void solve()
{
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
update(i & 1, i, x);
}
while (q--)
{
int t, l, r;
cin >> t >> l >> r;
if (t == 1) update(l & 1, l, r);
else
{
if ((r - l) % 2)
{
cout << 0 << '\n';
continue;
}
int p = 1;
if (l % 2 == 0) p ^= 1;
cout << get(p, l, r) << '\n';
}
}
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int t = 1;
while (t--) solve();
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... |