Submission #1353196

#TimeUsernameProblemLanguageResultExecution timeMemory
1353196luvwinterXORanges (eJOI19_xoranges)C++17
100 / 100
82 ms11328 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int , int>
#define fi first
#define se second
#define endl '\n'
#define faster ios_base :: sync_with_stdio(false); cin.tie(NULL);
int n , q;
const int N = 2e5 + 5;
int a[N];
int st[4 * N][2];
void update(int idx , int l , int r , int pos , int v , int type) {
     if(l == r) {
         st[idx][type] = v;
         return;
     }
     int mid = (l + r) / 2;
     if(mid >= pos) update(2 * idx , l , mid , pos , v , type);
     else update(2 * idx + 1 , mid + 1 , r , pos , v , type);
     st[idx][type] = st[2 * idx][type] ^ st[2 * idx + 1][type];
}
int get(int idx , int l , int r , int u , int v , int type) {
     if(l > v || r < u) return 0;
     if(u <= l && r <= v) {
        return st[idx][type];
     }
     int mid = (l + r) / 2;
     return get(2 * idx , l , mid , u , v , type) ^ get(2 * idx + 1 , mid + 1 , r , u , v , type);
}



void solve () {
      cin >> n >> q;
      for(int i = 1 ; i <= n ; i ++ ) {
          cin >> a[i];
          if(i % 2 == 0) {
             update(1 , 1 , n , i , a[i] , 0);
          }
          else{
             update(1 , 1 , n ,  i , a[i] , 1);
          }
      }
      while(q--) {
          int t; cin >> t;
          if(t == 1) {
              int u , v; cin >> u >> v;
              if(u % 2 == 0){
                 update(1 , 1 , n , u , v , 0);
              }
              if(u % 2 == 1) {
                 update(1 , 1 , n , u , v , 1);
              }
          }
          else{
              int l , r ; cin >> l >> r;
              if(r % 2 != l % 2) {
                  cout << 0 << endl;
              }
              else {
                  if(r % 2 == 0) {
                     cout << get(1 , 1 , n , l , r , 0) << endl;
                  }
                  else{
                     cout << get(1 , 1 , n , l , r , 1) << endl;
                  }

              }
          }
      }

}


main () {
    faster;
    solve();

    return 0;

}

Compilation message (stderr)

xoranges.cpp:76:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   76 | main () {
      | ^~~~
#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...