Submission #1322649

#TimeUsernameProblemLanguageResultExecution timeMemory
1322649Hamed_GhaffariXORanges (eJOI19_xoranges)C++20
100 / 100
84 ms6524 KiB
#include <bits/stdc++.h> using namespace std; #define lc id<<1 #define rc lc|1 #define mid ((l+r)>>1) const int MXN = 2e5+5; int n, a[MXN]; struct { int seg[MXN<<2]; void upd(int i, int x, int l=1, int r=n+1, int id=1) { if(r-l == 1) { seg[id] = x; return; } i<mid ? upd(i, x, l, mid, lc) : upd(i, x, mid, r, rc); seg[id] = seg[lc]^seg[rc]; } int get(int s, int e, int l=1, int r=n+1, int id=1) { if(s>=r || l>=e) return 0; if(s<=l && r<=e) return seg[id]; return get(s, e, l, mid, lc) ^ get(s, e, mid, r, rc); } } seg[2]; int q; int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); cin >> n >> q; for(int i=1; i<=n; i++) { cin >> a[i]; seg[i&1].upd(i, a[i]); } while(q--) { int t; cin >> t; if(t==1) { int i, x; cin >> i >> x; seg[i&1].upd(i, x); } else { int l, r; cin >> l >> r; cout << ((l&1)==(r&1) ? seg[l&1].get(l, r+1) : 0) << '\n'; } } 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...