#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main(){
int n,q,a,b,t,ans;
cin>>n>>q;
vector<int> v(n),vxor(n+1,0),yesno0(n+1,0),yesno1(n+1,0);
for(int i=0;i<n;i++){
cin>>v[i];
vxor[i+1]=vxor[i]^v[i];
if(i%2==0){
yesno0[i+1]=v[i];
if(i>0)yesno0[i+1]=v[i]^yesno0[i-1];
}else{
yesno1[i+1]=v[i];
yesno1[i+1]=v[i]^yesno1[i-1];
}
}
while(q--){
cin>>t>>a>>b;a--;
if(t==1){
t=b;
b=b^v[a];
if(a%2==0){
for(int i=a+1;i<=n;i+=2){
yesno0[i]^=b;
}
}
else{
for(int i=a+1;i<=n;i+=2){
yesno1[i]^=b;
}
}
v[a]=t;
}else{
if((b-a)%2==1){
if(a%2==1){
cout<<(yesno1[a-1]^yesno1[b]);
}else{
if(a>0){
cout<<(yesno0[a-1]^yesno0[b]);
}else{
cout<<yesno0[b];
}
}
}
else{
cout<<0;
}
cout<<"\n";
}
}
}
# | 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... |