Submission #1067638

#TimeUsernameProblemLanguageResultExecution timeMemory
1067638raduvXORanges (eJOI19_xoranges)C++14
100 / 100
35 ms3932 KiB
#include <stdio.h> #include <ctype.h> const int MAXN = 2e5; using namespace std; int aib[2][MAXN + 1]; int v[MAXN + 1]; void update(int poz, int x, int n){ int i; for( i = poz; i <= n; i += i & -i){ aib[poz & 1][i] ^= x; } } int query(int poz, int par){ int rez = 0, i; for( i = poz; i > 0; i = (i & (i - 1))){ rez ^= aib[par][i]; } return rez; } static inline int getInt(){ int n = 0, ch; while(!isdigit(ch = getc(stdin))); do n = n * 10 + ch - '0'; while (isdigit(ch = getc(stdin))); return n; } int main(){ int n, q, i, op, l, r; n = getInt(); q = getInt(); for( i = 1; i <= n; i++ ){ v[i] = getInt(); update(i, v[i], n); } for( i = 0; i < q; i++ ){ op = getInt(); l = getInt(); r = getInt(); if(op == 1){ update(l, v[l] ^ r, n); v[l] = r; } else{ if( (r - l) & 1 ){ printf("0\n"); } else{ printf("%d\n", query(r, r & 1) ^ query(l - 1, l & 1)); } } } 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...