제출 #819398

#제출 시각아이디문제언어결과실행 시간메모리
819398Andrijanikolic73XORanges (eJOI19_xoranges)C++17
0 / 100
1041 ms8076 KiB
#include <bits/stdc++.h> #define pb push_back #define ll long long #define int long long using namespace std; const int N=2e5+50; const int inf=1e18; const int mod=1e9+7; int a[N]; int n; int q; struct segtree{ int t[4*N]={0}; void build(int v,int tl,int tr){ if(tl==tr)t[v]=a[tl]; else { int tm=(tl+tr)/2; build(v*2,tl,tm); build(v*2+1,tm+1,tr); t[v]=(t[v*2]^t[v*2+1]); } } int query(int v,int tl,int tr,int l,int r){ if(tr<l||tl>r)return 0; if(l<=tl&&tr<=r)return t[v]; int tm=(tl+tr)/2; return (query(v*2,tl,tm,l,r)^query(v*2+1,tm+1,tr,l,r)); } void update(int v,int tl,int tr,int index,int value){ if(tl==tr){ t[v]=value; } else { int tm=(tl+tr)/2; if(index<=tm){ update(v*2,tl,tm,index,value); } else { update(v*2+1,tm+1,tr,index,value); } t[v]=(t[v*2]^t[v*2+1]); } } }; segtree seg; signed main(){ ios::sync_with_stdio(false); cin.tie(0); cin>>n>>q; for(int i=1;i<=n;i++)cin>>a[i]; seg.build(1,1,n); while(q--){ int o; cin>>o; if(o==1){ int i,x; cin>>i>>x; seg.update(1,1,n,i,x); } else { int l,r; cin>>l>>r; int ans=0; for(int i=l;i<=r;i++){ ans^=seg.query(1,1,n,i,r); } cout<<ans; cout<<endl; } } }
#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...