제출 #1163902

#제출 시각아이디문제언어결과실행 시간메모리
1163902canhnam357XORanges (eJOI19_xoranges)C++20
100 / 100
110 ms8096 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define MASK(i) (1LL << (i)) #define int long long const int inf = 2e9; const int mod = 3e4 + 13; const int N = 2.5e5 + 5; const int b = 1500; void ckmax(int& f, int s) { f = (f > s ? f : s); } void ckmin(int& f, int s) { f = (f < s ? f : s); } int st[2][1 << 19] = {}; void update(int p, int pos, int val, int id = 1, int l = 1, int r = 1 << 18) { if (pos < l || pos > r) return; if (l == r) { st[p][id] = val; return; } int mid = (l + r) >> 1; update(p, pos, val, id << 1, l, mid); update(p, pos, val, id << 1 | 1, mid + 1, r); st[p][id] = st[p][id << 1] ^ st[p][id << 1 | 1]; } int get(int p, int u, int v, int id = 1, int l = 1, int r = 1 << 18) { if (r < u || l > v) return 0; if (l >= u && r <= v) return st[p][id]; int mid = (l + r) >> 1; return get(p, u, v, id << 1, l, mid) ^ get(p, u, v, id << 1 | 1, mid + 1, r); } void solve() { int n, q; cin >> n >> q; for (int i = 1; i <= n; i++) { int x; cin >> x; update(i & 1, i, x); } while (q--) { int t, l, r; cin >> t >> l >> r; if (t == 1) update(l & 1, l, r); else { if ((r - l) % 2) { cout << 0 << '\n'; continue; } int p = 1; if (l % 2 == 0) p ^= 1; cout << get(p, l, r) << '\n'; } } } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); int t = 1; while (t--) solve(); 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...