Submission #803187

#TimeUsernameProblemLanguageResultExecution timeMemory
803187Essa2006XORanges (eJOI19_xoranges)C++14
100 / 100
571 ms9520 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define endl '\n' #define FF first #define SS second #define all(a) a.begin(), a.end() #define mod (ll)(1000000007) const int pr=18, s_p=1<<pr, e_p=(1<<(pr+1))-1; int n, q; int S[2][1<<(pr+1)]; void update(int par, int ind, int new_){ S[par][ind]=new_; S[!par][ind]=0; while(ind/=2){ S[par][ind]=S[par][ind*2]^S[par][ind*2+1]; S[!par][ind]=S[!par][ind*2]^S[!par][ind*2+1]; } } int get(int id, int u, int v, int l, int r, int par){ if(l>v || r<u) return 0; if(l>=u && r<=v) return S[par][id]; int md=(l+r)/2; return get(id*2, u, v, l, md, par)^get(id*2+1, u, v, md+1, r, par); } int main(){ cin>>n>>q; for(int i=1, a;i<=n;i++){ cin>>a; update(i&1, i+s_p, a); } while(q--){ int type, i, x; cin>>type>>i>>x; if(type==1){ for(int j=0;j<=29;j++){ update(i&1, i+s_p, x); } } else if(type==2){ int ans=0; if((x-i+1)&1) ans=get(1, i+s_p, x+s_p, s_p, e_p, i&1); cout<<ans<<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...