Submission #468592

#TimeUsernameProblemLanguageResultExecution timeMemory
468592_BodyXORanges (eJOI19_xoranges)C++14
100 / 100
673 ms25184 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize("-Ofast") #pragma GCC optimize("trapv") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,sse4.2,popcnt,abm,mmx,avx2,tune=native") #pragma GCC optimize("-ffast-math") #pragma GCC optimize("-funroll-loops") #define int long long int tree[(int)(2e5+1)*4],arr[(int)2e5+1]; int n; void build(int l,int r,int v) { if(l==r) { tree[v]=arr[l]; } else { int mid=(l+r)/2; build(l,mid,v*2+1); build(mid+1,r,v*2+2); tree[v]=tree[v*2+1]^tree[v*2+2]; } } int get(int l,int r,int v,int lq,int rq) { if(r<lq||l>rq) return 0; if(l>=lq&&r<=rq) return tree[v]; int mid=(l+r)/2; return get(l,mid,v*2+1,lq,rq)^get(mid+1,r,v*2+2,lq,rq); } void update(int l,int r,int idx,int val,int v) { if(l==r) { tree[v]=val; } else { int mid=(l+r)/2; if(idx<=mid) update(l,mid,idx,val,v*2+1); else update(mid+1,r,idx,val,v*2+2); tree[v]=tree[v*2+1]^tree[v*2+2]; } } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n; int q; cin>>q; for(int i=0;i<n*4;i++) tree[i]=0; for(int i=0;i<n;i++) cin>>arr[i]; int idx=0; map<int,int>map; int arr2[n]; for(int i=0;i<n;i+=2){ map[i]=idx; arr2[idx++]=arr[i]; } for(int i=1;i<n;i+=2){ map[i]=idx; arr2[idx++]=arr[i]; } copy(arr2, arr2+n, arr); build(0,n-1,0); vector<int>ans; for(int i=0;i<q;i++) { int t; cin>>t; if(t==1) { cin>>idx; idx--; int val; cin>>val; idx=map[idx]; update(0,n-1,idx,val,0); } else { int l,r; cin>>l>>r; l--,r--; if((r-l+1)%2==0) { ans.push_back(0); continue ; } l=map[l]; r=map[r]; ans.push_back(get(0,n-1,0,l,r)); } } for(int i=0;i<ans.size();i++) cout<<ans[i]<<endl; return 0; }

Compilation message (stderr)

xoranges.cpp: In function 'int32_t main()':
xoranges.cpp:104:27: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  104 |              for(int i=0;i<ans.size();i++)
      |                          ~^~~~~~~~~~~
#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...