#include<bits/stdc++.h>
using namespace std;
#define int long long
struct fenwick {
int v[200000] = {0};
void update(int i, int val) {
i++;
while(i < 200000) {
v[i] ^= val;
i += i&(-i);
}
}
int getXor(int i) {
int x = 0;
while(i > 0) {
x ^= v[i];
i -= i & (-i);
}
return x;
}
};
int32_t main () {
int n, q;
cin >> n >> q;
vector<int> v(n, 0);
fenwick x;
fenwick xodd;
for(int i = 0;i<n;i++) {
int p;
cin >> p;
v[i] = p;
x.update(i, p);
if(i%2 == 0) {
xodd.update(i, p);
}
}
while(q--) {
int k;
cin >> k;
if(k == 1) {
int i, val;
cin >> i >> val;
x.update(i, val ^ v[i-1]);
if(i%2 == 1) {
xodd.update(i, val ^ v[i-1]);
}
v[i-1] = val;
}
else {
int l, u;
cin >> l >> u;
if((u - l)%2 == 0) {
if(l%2 == 1) {
int ans = xodd.getXor(u) ^ xodd.getXor(l-1);cout<<ans<<endl;
}
else {
int ans = x.getXor(u) ^ xodd.getXor(u) ^ x.getXor(l-1) ^ xodd.getXor(l-1);cout<<ans<<endl;
}
}
else {
cout<<0<<endl;
}
}
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
3320 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
3404 KB |
Output is correct |
2 |
Correct |
5 ms |
3404 KB |
Output is correct |
3 |
Correct |
5 ms |
3404 KB |
Output is correct |
4 |
Correct |
4 ms |
3404 KB |
Output is correct |
5 |
Correct |
4 ms |
3392 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
3320 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
607 ms |
6160 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
3320 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |