Submission #446779

#TimeUsernameProblemLanguageResultExecution timeMemory
446779fuad27XORanges (eJOI19_xoranges)C++14
18 / 100
607 ms6160 KiB
#include<bits/stdc++.h> using namespace std; #define int long long struct fenwick { int v[200000] = {0}; void update(int i, int val) { i++; while(i < 200000) { v[i] ^= val; i += i&(-i); } } int getXor(int i) { int x = 0; while(i > 0) { x ^= v[i]; i -= i & (-i); } return x; } }; int32_t main () { int n, q; cin >> n >> q; vector<int> v(n, 0); fenwick x; fenwick xodd; for(int i = 0;i<n;i++) { int p; cin >> p; v[i] = p; x.update(i, p); if(i%2 == 0) { xodd.update(i, p); } } while(q--) { int k; cin >> k; if(k == 1) { int i, val; cin >> i >> val; x.update(i, val ^ v[i-1]); if(i%2 == 1) { xodd.update(i, val ^ v[i-1]); } v[i-1] = val; } else { int l, u; cin >> l >> u; if((u - l)%2 == 0) { if(l%2 == 1) { int ans = xodd.getXor(u) ^ xodd.getXor(l-1);cout<<ans<<endl; } else { int ans = x.getXor(u) ^ xodd.getXor(u) ^ x.getXor(l-1) ^ xodd.getXor(l-1);cout<<ans<<endl; } } else { cout<<0<<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...