Submission #838485

#TimeUsernameProblemLanguageResultExecution timeMemory
838485BlockOGXORanges (eJOI19_xoranges)C++14
100 / 100
261 ms4316 KiB
#include <iostream> using namespace std; unsigned int o[200000], b1[200001], b2[200001]; unsigned int bxor(unsigned int b[200001], int i) { i++; unsigned int res = 0; while (i > 0) { res ^= b[i]; i -= i & (-i); } return res; } void bchg(unsigned int b[200001], int n, int i, unsigned int c) { i++; while (i <= n) { b[i] ^= c; i += i & (-i); } } int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, q; cin >> n >> q; for (int i = 0; i < n; i++) { cin >> o[i]; bchg(i & 1 ? b2 : b1, n, i, o[i]); } for (int it = 0; it < q; it++) { int code; cin >> code; if (code == 1) { int i; unsigned int j; cin >> i >> j; i--; bchg(i & 1 ? b2 : b1, n, i, j ^ o[i]); o[i] = j; } else { int l, u; cin >> l >> u; if (!((u - l + 1) & 1)) { cout << 0 << endl; continue; } cout << (bxor(l & 1 ? b1 : b2, l - 2) ^ bxor(l & 1 ? b1 : b2, u - 1)) << 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...