#include<bits/stdc++.h>
using namespace std;
int tree[800005][2],a[200005];
void add(int v,int tl,int tr,int ind,int val){
if(tl==tr){
tree[v][ind%2]=val;
tree[v][1-ind%2]=0;
return;
}
int mid=(tl+tr)/2;
if(ind<=mid) add(v*2,tl,mid,ind,val);
else add(v*2+1,mid+1,tr,ind,val);
tree[v][0]=tree[v*2][0]^tree[v*2+1][0];
tree[v][1]=tree[v*2][1]^tree[v*2+1][1];
}
int sum(int v,int tl,int tr,int l,int r,int par){
if(l<=tl and tr<=r){
return tree[v][par];
}
int mid=(tl+tr)/2;
int ans=0;
if(l<=mid) ans+=sum(v*2,tl,mid,l,r,par);
if(r>mid) ans+=sum(v*2+1,mid+1,tr,l,r,par);
return ans;
}
int main(){
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
add(1,1,n,i,a[i]);
}
for(int i=1;i<=q;i++){
int t,l,r;
cin>>t;
if(t==2){
cin>>l>>r;
if((r-l+1)%2==0) cout<<0<<endl;
else cout<<sum(1,1,n,l,r,r%2)<<endl;
}
else{
cin>>l>>r;
add(1,1,n,l,r);
}
}
}
# | 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... |