Submission #1221537

#TimeUsernameProblemLanguageResultExecution timeMemory
1221537vehamXORanges (eJOI19_xoranges)C++20
100 / 100
370 ms5748 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; #define par(x) (bool(x&1) ? Ao : Ae) int query(vi &A, int n2, int l, int u){ l += n2 - 1; u += n2 - 1; int ans = 0; for(;u > l;(l = (l+1)>>1),(u = (u-1)>>1)){ if(l % 2) ans ^= A[l]; if(!(u % 2)) ans ^= A[u]; } if(u == l) ans ^= A[u]; return ans; } int main(){ int n,q; cin >> n >> q; int n2 = 1 << int(ceil(log2(n))); vi Ao(2*n2,0),Ae(2*n2,0); for(int i = 0;i < n;i++) cin >> par(i)[n2+i]; for(int i = n2-1;i;i--) Ao[i] = (Ao[i<<1] ^ Ao[(i<<1) + 1]),Ae[i] = (Ae[i<<1] ^ Ae[(i<<1) + 1]); int t,i,j,u,l,m; while(q--){ cin >> t; if(t == 1){ cin >> i >> j; i += n2 - 1; j ^= par(i)[i]; for(int i2 = i;i2;i2>>=1) par(i)[i2] ^= j; } else{ cin >> l >> u; if((u - l) % 2){ cout << 0 << '\n'; } else{ cout << query(par(l+1),n2,l,u) << '\n'; } } } return 0; }
#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...