Submission #466161

#TimeUsernameProblemLanguageResultExecution timeMemory
466161MKutayBozkurtXORanges (eJOI19_xoranges)C++14
100 / 100
116 ms3928 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; class fenwickTree { public: vector<int> table; int n; fenwickTree(int N) { n = N + 1; table.resize(n); } int query(int i) { int v{}; i++; while (i > 0) { v ^= table[i]; i -= i & (-i); } return v; } int range_query(int l, int r) { return query(r) ^ query(l - 1); } void update(int i, int delta) { int prev = range_query(i, i); i++; while (i < n) { table[i] ^= prev; table[i] ^= delta; i += i & (-i); } } }; int32_t main() { ios::sync_with_stdio(0); cin.tie(0); int n, q; cin >> n >> q; vector<int> a(n); for (int &x : a) cin >> x; fenwickTree ft1(n), ft0(n); for (int i = 0; i < n; i++) { if (i % 2) { ft1.update(i, a[i]); } else { ft0.update(i, a[i]); } } while (q--) { int op; cin >> op; if (op == 1) { int i, v; cin >> i >> v, i--; if (i % 2) { ft1.update(i, v); } else { ft0.update(i, v); } } else { int l, r; cin >> l >> r, l--, r--; if ((r - l + 1) % 2 == 0) { cout << "0\n"; } else if (l % 2) { cout << ft1.range_query(l, r) << '\n'; } else { cout << ft0.range_query(l, r) << '\n'; } } } }
#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...