#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define int long long
#define endl '\n'
const int N=2e5+5,inf=2e18,MOD=1e9+7;
int seg[N*4][2],a[N],offset=1;
void update(int idx,int val,int type){
idx+=offset;
seg[idx][type]=val;
idx/=2;
while(idx>0){
seg[idx][type]=(seg[idx*2][type]^seg[idx*2+1][type]);
idx/=2;
}
}
int query(int node,int qlo,int qhi,int lo,int hi,int type){
if(lo>=qlo && hi<=qhi)return seg[node][type];
if(lo>qhi || hi<qlo)return 0;
int mid=(lo+hi)/2;
return (query(node*2,qlo,qhi,lo,mid,type)^query(node*2+1,qlo,qhi,mid+1,hi,type));
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n,q; cin>>n>>q;
while(offset<n)offset*=2;
for(int i=1;i<=n;i++){
cin>>a[i];
update(i,a[i],i%2);
}
while(q--){
int t,l,r; cin>>t>>l>>r;
if(t==1)update(l,r,l%2);
else{
if((r-l)%2)cout<<0<<endl;
else cout<<query(1,l,r,0,offset-1,l%2)<<endl;
}
}
}
# | 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... |