Submission #1067632

#TimeUsernameProblemLanguageResultExecution timeMemory
1067632raduvXORanges (eJOI19_xoranges)C++14
100 / 100
102 ms8788 KiB
#include <bits/stdc++.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;
}
int main(){
  int n, q, i, op, l, r;
  scanf("%d%d", &n, &q);
  for( i = 1; i <= n; i++ ){
    scanf("%d", &v[i]);
    update(i, v[i], n);
  }
  for( i = 0; i < q; i++ ){
    scanf("%d%d%d", &op, &l, &r);
    if(op == 1){
      update(l, v[l], n);
      update(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;
}

Compilation message (stderr)

xoranges.cpp: In function 'int main()':
xoranges.cpp:21:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |   scanf("%d%d", &n, &q);
      |   ~~~~~^~~~~~~~~~~~~~~~
xoranges.cpp:23:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |     scanf("%d", &v[i]);
      |     ~~~~~^~~~~~~~~~~~~
xoranges.cpp:27:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |     scanf("%d%d%d", &op, &l, &r);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#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...