Submission #1149579

#TimeUsernameProblemLanguageResultExecution timeMemory
1149579ChocoXORanges (eJOI19_xoranges)C++20
100 / 100
219 ms15628 KiB
#include<bits/stdc++.h> using namespace std; #define Study ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define ll long long #define ull unsigned long long #define pb push_back #define ff first #define ss second #define ins insert #define all(x) x.begin(),x.end() #define fori(x,y,z) for(ll x=y;x<=z;x++) const ll INF=1e9; const ll sz=2e5+10; const ll mod=1e9; vector<ll>a(sz),cut(4*sz,0),tek(4*sz,0); void build(ll v,ll l,ll r){ if(l==r){ if(l%2==0) cut[v]=a[l]; else{ tek[v]=a[l]; //cout<<"HAI"<<v<<endl; } return; } ll mid=(l+r)>>1; build(v<<1,l,mid); build(v<<1|1,mid+1,r); tek[v]=tek[v<<1]^tek[v<<1|1]; cut[v]=cut[v<<1]^cut[v<<1|1]; } void update(ll v,ll l,ll r,ll pos,ll val){ if(l==r){ if(l%2) tek[v]=val; else cut[v]=val; return; } ll mid=(l+r)>>1; if(pos<=mid) update(v<<1,l,mid,pos,val); else update(v<<1|1,mid+1,r,pos,val); cut[v]=cut[v<<1]^cut[v<<1|1]; tek[v]=tek[v<<1]^tek[v<<1|1]; } ll query(ll v,ll l,ll r,ll tl,ll tr,ll st){ if(l>tr || r<tl) return 0; if(l>=tl && r<=tr) return (st) ? tek[v] : cut[v]; ll mid=(l+r)>>1; return query(v<<1,l,mid,tl,tr,st)^query(v<<1|1,mid+1,r,tl,tr,st); } void work(){ ll n,q; cin>>n>>q; fori(i,1,n){ cin>>a[i]; } build(1,1,n); while(q--){ ll t; cin>>t; if(t==1){ ll pos,val; cin>>pos>>val; update(1,1,n,pos,val); } else{ ll l,r; cin>>l>>r; if((r-l+1)%2==0){ cout<<0<<endl; continue; } if(l%2) cout<<query(1,1,n,l,r,1)<<endl; else cout<<query(1,1,n,l,r,0)<<endl; } } } int main(){ Study; ll t=1; //cin>>t; while(t--){ work(); } } /* 62->legendary grandmaster 0.01% 313->International grandmaster 0.05% 737->Grandmaster 0.12% 1021->International master 0.17% 2859->Master 0.47% 5374->Candidate Master 0.89% 14429->Expert 2.40% ~~ !Goal till summer!! ~~ 26668->Specialist 4.44% //skip here >:D 46695->Pupil 7.78% ~~ you are here !! ~~ 600,000 user var cfde */
#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...