Submission #1219178

#TimeUsernameProblemLanguageResultExecution timeMemory
1219178matereXORanges (eJOI19_xoranges)C++20
0 / 100
361 ms7288 KiB
#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; cout<<sum(1,1,n,l,r,1-(r+1)%2)<<endl; } else{ cin>>l>>r; add(1,1,n,l,r); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...