Submission #1241065

#TimeUsernameProblemLanguageResultExecution timeMemory
1241065azamuraiXORanges (eJOI19_xoranges)C++20
100 / 100
93 ms11336 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define Sz(x) (int)x.size() #define mp make_pair using namespace std; typedef long long ll; const int N = 2e5 + 5; int n, q, a[N]; struct seg_tree { int t[N*4]; void upd(int v, int tl, int tr, int pos, int x) { if (tl == tr) { t[v] = x; return; } int mid = (tl + tr) / 2; if (pos <= mid) upd(v+v,tl,mid,pos,x); else upd(v+v+1,mid+1,tr,pos,x); t[v] = (t[v+v] ^ t[v+v+1]); } int get(int v, int tl, int tr, int l, int r) { if (tl > r || l > tr) return 0; if (tl >= l && tr <= r) return t[v]; int mid = (tl + tr) / 2; return (get(v+v,tl,mid,l,r) ^ get(v+v+1,mid+1,tr,l,r)); } } rt1, rt2; void solve() { cin >> n >> q; for (int i = 1; i <= n; i++) { cin >> a[i]; if (i % 2 == 1) rt1.upd(1,1,n,i,a[i]); else rt2.upd(1,1,n,i,a[i]); } while (q--) { int tp; cin >> tp; if (tp == 1) { int ind, val; cin >> ind >> val; if (ind % 2 == 1) rt1.upd(1,1,n,ind,val); else rt2.upd(1,1,n,ind,val); a[ind] = val; } else { int l, r; cin >> l >> r; if ((r - l + 1) % 2 == 0) cout << 0 << '\n'; else { if (l % 2 == 1) cout << rt1.get(1,1,n,l,r) << '\n'; else cout << rt2.get(1,1,n,l,r) << '\n'; } } } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; //cin >> t; while ( t-- ) { solve(); cout << '\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...