Submission #1245280

#TimeUsernameProblemLanguageResultExecution timeMemory
1245280boyan2010XORanges (eJOI19_xoranges)C++20
100 / 100
55 ms3244 KiB
#include<bits/stdc++.h> #define MAXN 1000007 using namespace std; int n,q,a[MAXN],b[MAXN],t,x,y; int ft1[MAXN],ft2[MAXN]; int ls(int x) { return ((x)&(-x)); } void update1(int x,int val) { for(int i=x;i<=MAXN;i+=ls(i)) { ft1[i]^=val; } } void update2(int x,int val) { for(int i=x;i<=MAXN;i+=ls(i)) { ft2[i]^=val; } } int s1(int x) { int ans=0; for(int i=x;i>0;i-=ls(i)) { ans^=ft1[i]; } return ans; } int s2(int x) { int ans=0; for(int i=x;i>0;i-=ls(i)) { ans^=ft2[i]; } return ans; } int sum1(int l,int r) { return (s1(r)^s1(l-1)); } int sum2(int l,int r) { return (s2(r)^s2(l-1)); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n>>q; for(int i=1;i<=n;i++) { if(i%2) { cin>>a[(i+1)/2]; update1((i+1)/2,a[(i+1)/2]); } else { cin>>b[i/2]; update2(i/2,b[i/2]); } } for(int i=0;i<q;i++) { cin>>t>>x>>y; if(t==2) { if((y-x+1)%2==0) { cout<<0<<"\n"; } else { if(x%2) { cout<<sum1((x+1)/2,(y+1)/2)<<"\n"; } else { cout<<sum2(x/2,y/2)<<"\n"; } } } else { if(x%2) { update1((x+1)/2,(a[(x+1)/2]^y)); a[(x+1)/2]=y; } else { update2(x/2,(b[x/2]^y)); b[x/2]=y; } } } 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...