Submission #1178147

#TimeUsernameProblemLanguageResultExecution timeMemory
1178147ereringXORanges (eJOI19_xoranges)C++20
100 / 100
104 ms9504 KiB
#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 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...