Submission #1246277

#TimeUsernameProblemLanguageResultExecution timeMemory
1246277minhpkXORanges (eJOI19_xoranges)C++20
100 / 100
100 ms11420 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int a,b; int z[1000005]; struct ST{ int f[4000005]={0}; void update(int id,int l,int r,int pos,int val){ if (l==r){ f[id]=val; return; } int mid=(l+r)/2; if (pos<=mid){ update(id*2,l,mid,pos,val); }else{ update(id*2+1,mid+1,r,pos,val); } f[id]=f[id*2]^f[id*2+1]; } int get(int id,int l,int r,int x,int y){ if (x>r || y<l){ return 0; } if (l>=x && y>=r){ return f[id]; } int mid=(l+r)/2; return get(id*2,l,mid,x,y)^get(id*2+1,mid+1,r,x,y); } }; ST f1,f2; signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> a >> b; for (int i=1;i<=a;i++){ cin >> z[i]; if (i%2==0){ f2.update(1,1,a,i,z[i]); }else{ f1.update(1,1,a,i,z[i]); } } while (b--){ int c; cin >> c; if (c==1){ int x,y; cin >> x >> y; if (x%2==0){ f2.update(1,1,a,x,y); }else{ f1.update(1,1,a,x,y); } }else{ int x,y; cin >> x >> y; if ((y-x+1)%2==0){ cout << 0 << "\n"; }else{ if (x%2==1){ cout << f1.get(1,1,a,x,y) << "\n"; }else{ cout << f2.get(1,1,a,x,y) << "\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...