#include <bits/stdc++.h>
#define int long long
using namespace std;
int a,b;
int z[1000005];
struct ST{
int f[4000005]={0};
void update(int id,int l,int r,int pos,int val){
if (l==r){
f[id]=val;
return;
}
int mid=(l+r)/2;
if (pos<=mid){
update(id*2,l,mid,pos,val);
}else{
update(id*2+1,mid+1,r,pos,val);
}
f[id]=f[id*2]^f[id*2+1];
}
int get(int id,int l,int r,int x,int y){
if (x>r || y<l){
return 0;
}
if (l>=x && y>=r){
return f[id];
}
int mid=(l+r)/2;
return get(id*2,l,mid,x,y)^get(id*2+1,mid+1,r,x,y);
}
};
ST f1,f2;
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> a >> b;
for (int i=1;i<=a;i++){
cin >> z[i];
if (i%2==0){
f2.update(1,1,a,i,z[i]);
}else{
f1.update(1,1,a,i,z[i]);
}
}
while (b--){
int c;
cin >> c;
if (c==1){
int x,y;
cin >> x >> y;
if (x%2==0){
f2.update(1,1,a,x,y);
}else{
f1.update(1,1,a,x,y);
}
}else{
int x,y;
cin >> x >> y;
if ((y-x+1)%2==0){
cout << 0 << "\n";
}else{
if (x%2==1){
cout << f1.get(1,1,a,x,y) << "\n";
}else{
cout << f2.get(1,1,a,x,y) << "\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... |