제출 #803178

#제출 시각아이디문제언어결과실행 시간메모리
803178Essa2006T-Covering (eJOI19_covering)C++14
0 / 100
2 ms2388 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define endl '\n' #define FF first #define SS second #define all(a) a.begin(), a.end() #define mod (ll)(1000000007) const int pr=16, s_p=1<<pr, e_p=(1<<(pr+1))-1; int n, q; int S[2][32][1<<(pr+1)]; void update(int par, int j, int ind, bool new_){ S[par][j][ind]=new_; S[!par][j][ind]=0; while(ind/=2){ S[par][j][ind]=S[par][j][ind*2]^S[par][j][ind*2+1]; S[!par][j][ind]=S[!par][j][ind*2]^S[!par][j][ind*2+1]; } } bool get(int id, int u, int v, int l, int r, int par, int j){ if(l>v || r<u) return 0; if(l>=u && r<=v) return S[par][j][id]; int md=(l+r)/2; return get(id*2, u, v, l, md, par, j)^get(id*2+1, u, v, md+1, r, par, j); } int main(){ cin>>n>>q; for(int i=1, a;i<=n;i++){ cin>>a; for(int j=0;j<=31;j++){ update(i&1, j, i+s_p, ((a&(1<<j))!=0)); } } while(q--){ int type, i, x; cin>>type>>i>>x; if(type==1){ for(int j=0;j<=31;j++){ update(i&1, j, i+s_p, ((x&(1<<j))!=0)); } } else if(type==2){ int ans=0; for(int j=0;j<=31 && (x-i+1)&1;j++){ bool odd=get(1, i+s_p, x+s_p, s_p, e_p, i&1, j); if(odd) ans+=1<<j; } cout<<ans<<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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...