Submission #441415

#TimeUsernameProblemLanguageResultExecution timeMemory
441415RaresFelixXORanges (eJOI19_xoranges)C++17
100 / 100
178 ms11204 KiB
#include <bits/stdc++.h> #define MAXN 817171 #ifdef AICI #define cin fi #endif // AICI using namespace std; #ifdef AICI ifstream fi("a.in"); #endif // AICI int A[MAXN], n, q; struct AINT { int V[MAXN]; void _u(int u, int s, int d, int p, int v) { if(d < p || p < s)return; if(s==d){ V[u] = v; return; } _u(u*2, s, (s+d)/2, p, v); _u(u*2+1, (s+d)/2+1, d, p, v); V[u] = V[u*2] ^ V[u*2+1]; } int _q(int u, int s, int d, int l, int r) { if(d < l || r < s)return 0; if(l <= s && d <= r)return V[u]; return _q(u*2, s, (s+d)/2, l, r) ^ _q(u*2+1, (s+d)/2+1, d, l, r); } void setup(int delta) { for(int i = 1; i + delta <= n; i += 2) _u(1, 1, n, i+delta, A[i+delta]); } } Pare, Impare; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.precision(10); cout << fixed; cin >> n >> q; for(int i = 1; i <= n; ++i) cin >> A[i]; Pare.setup(1); Impare.setup(0); int tip, a, b; for(int i = 1; i <= q; ++i){ cin >> tip >> a >> b; if(tip == 1) { A[a] = b; if(a%2)Impare._u(1, 1, n, a, b); else Pare._u(1, 1, n, a, b); } else { if((a^b)&1){ cout << "0\n"; } else { if(a&1) cout << Impare._q(1, 1, n, a, b); else cout << Pare._q(1, 1, n, a, b); cout << "\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...