Submission #1306098

#TimeUsernameProblemLanguageResultExecution timeMemory
1306098syanvuXORanges (eJOI19_xoranges)C++20
0 / 100
135 ms12212 KiB
#include <bits/stdc++.h> #define pb push_back #define SS ios_base::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr); #define int long long #define all(v) v.begin(),v.end() using namespace std; const int N = 2e5 + 7, inf = 1e9 + 1, mod = 998244353; int t[4 * N][2]; void upd(int v, int tl, int tr, int pos, int x){ if(tl == tr){ t[v][pos % 2] = x; return; } int mid = (tl + tr) / 2; if(mid >= pos) upd(v * 2, tl, mid, pos, x); else upd(v * 2 + 1, mid + 1, tr, pos, 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 get(int v, int tl, int tr, int l, int r, int tp){ if(tl > r || l > tr) return 0; if(tl >= l && r >= tr) return t[v][tp]; int mid = (tl + tr) / 2; return get(v * 2, tl, mid, l, r, tp) ^ get(v * 2 + 1, mid + 1, tr, l, r, tp); } void solve(){ int n, q; cin >> n >> q; int a[n + 1]; for(int i = 1; i <= n; i++){ cin >> a[i]; upd(1, 1, n, i, a[i]); } while(q--){ int t; cin >> t; if(t == 1){ int i, x; cin >> i >> x; upd(1, 1, n, i, x); } else{ int l, r; cin >> l >> r; if(l % 2 == r % 2){ cout << get(1, 1, n, l, r, (l % 2)) << '\n'; } else{ cout << get(1, 1, n, l, r, 1 - (l % 2)) << '\n'; } } } } signed main(){ SS // freopen("trains.in", "r", stdin); // freopen("trains.out", "w", stdout); int t = 1; // cin >> t; while(t--){ solve(); } }
#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...