제출 #1195811

#제출 시각아이디문제언어결과실행 시간메모리
1195811OmarAlimammadzadeXORanges (eJOI19_xoranges)C++20
100 / 100
93 ms5704 KiB
#include <bits/stdc++.h> #define intt long long using namespace std; const int N = 2e5 + 1; int t[4 * N][2]; void upd(int v, int l, int r, int i, int x) { if (l == r) { t[v][l & 1] = x; return; } int m = (l + r) / 2; if (i <= m) { upd(v * 2, l, m, i, x); } else { upd(v * 2 + 1, m + 1, r, i, x); } t[v][0] = t[v * 2][0] ^ t[v * 2 + 1][0]; t[v][1] = t[v * 2][1] ^ t[v * 2 + 1][1]; } int ask(int v, int l, int r, int ql, int qr) { if (ql <= l and r <= qr) { return t[v][ql & 1]; } int m = (l + r) / 2, res = 0; if (ql <= m) { res ^= ask(v * 2, l, m, ql, qr); } if (m < qr) { res ^= ask(v * 2 + 1, m + 1, r, ql, qr); } return res; } signed main() { ios::sync_with_stdio(0); cin.tie(nullptr); int n, q; cin >> n >> q; for (int i = 1; i <= n; i++) { int x; cin >> x; upd(1, 1, n, i, x); } while (q--) { int tp; cin >> tp; if (tp == 1) { int i, x; cin >> i >> x; upd(1, 1, n, i, x); } else { int l, r; cin >> l >> r; if ((r - l) & 1) { cout << "0\n"; } else { cout << ask(1, 1, n, 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...