#include <bits/stdc++.h>
using namespace std;
vector<int> even, odd;
void upd(int v, int l, int r, int x, int val)
{
if(l == r)
{
if(l % 2 == 0)
{
even[v] = val;
odd[v] = 0;
}
else
{
even[v] = 0;
odd[v] = val;
}
return;
}
int m = (l + r) / 2;
if(x <= m) upd(v * 2, l, m, x, val);
else upd(v * 2 + 1, m + 1, r, x, val);
odd[v] = odd[v * 2] ^ odd[v * 2 + 1];
even[v] = even[v * 2] ^ even[v * 2 + 1];
}
int get(int v, int l, int r, int tl, int tr, int type)
{
if(tl > tr) return 0;
if(tl == l && tr == r) return type == 0 ? even[v] : odd[v];
int m = (l + r) / 2;
return get(v * 2, l, m, tl, min(tr, m), type) ^ get(v * 2 + 1, m + 1, r, max(tl, m + 1), tr, type);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n, q;
cin >> n >> q;
int s;
for(int i = 0; i <= 30; i++)
{
if((1 << i) >= n)
{
s = 1 << i;
break;
}
}
even.resize(4 * s);
odd.resize(4 * s);
vector<int> a(s + 1);
for(int i = 1; i <= n; i++)
{
int x;
cin >> x;
a[i] = x;
upd(1, 1, s, i, x);
}
while(q--)
{
int type, l, r;
cin >> type >> l >> r;
if(type == 1)
{
upd(1, 1, s, l, r);
a[l] = r;
}
if(type == 2)
{
cout << ((l - r + 1) % 2 == 0 ? 0 : get(1, 1, s, l, r, l % 2)) << "\n";
}
}
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 12/12 | ||||||
1 | Elfogadva | 3ms | 1832 KiB | ||||
2 | Elfogadva | 3ms | 2052 KiB | ||||
3 | Elfogadva | 3ms | 2268 KiB | ||||
4 | Elfogadva | 3ms | 2452 KiB | ||||
5 | Elfogadva | 3ms | 2820 KiB | ||||
subtask2 | 18/18 | ||||||
1 | Elfogadva | 3ms | 3152 KiB | ||||
2 | Elfogadva | 3ms | 3152 KiB | ||||
3 | Elfogadva | 3ms | 3224 KiB | ||||
4 | Elfogadva | 3ms | 3436 KiB | ||||
5 | Elfogadva | 3ms | 3536 KiB | ||||
subtask3 | 25/25 | ||||||
1 | Elfogadva | 7ms | 4256 KiB | ||||
2 | Elfogadva | 7ms | 4264 KiB | ||||
3 | Elfogadva | 7ms | 4260 KiB | ||||
4 | Elfogadva | 7ms | 4500 KiB | ||||
subtask4 | 20/20 | ||||||
1 | Elfogadva | 209ms | 22256 KiB | ||||
2 | Elfogadva | 209ms | 22256 KiB | ||||
3 | Elfogadva | 210ms | 22292 KiB | ||||
4 | Elfogadva | 201ms | 22592 KiB | ||||
5 | Elfogadva | 199ms | 22720 KiB | ||||
subtask5 | 25/25 | ||||||
1 | Elfogadva | 202ms | 22724 KiB | ||||
2 | Elfogadva | 202ms | 22720 KiB | ||||
3 | Elfogadva | 203ms | 22724 KiB | ||||
4 | Elfogadva | 199ms | 22724 KiB | ||||
5 | Elfogadva | 201ms | 22724 KiB |