Submission #1272857

#TimeUsernameProblemLanguageResultExecution timeMemory
1272857batsukh2006XORanges (eJOI19_xoranges)C++20
100 / 100
136 ms15672 KiB
#include<iostream> #include<map> #include<set> #include<cmath> #include<queue> #include<deque> #include<stack> #include<string> #include<math.h> #include<vector> #include<stdio.h> #include<utility> #include<iomanip> #include<string.h> #include<limits.h> #include<algorithm> #include<functional> #include<unordered_map> using namespace std; #pragma GCC target("popcnt") #define MOD 1000000007 #define int long long #define ss second #define ff first #define endl '\n' const int mxN=2e5+1; vector<int> tree1(4*mxN),tree2(4*mxN); void up1(int node, int l, int r, int p, int v){ if(l>=p&&p>=r){ tree1[node]=v; }else if(l>p||r<p){ return; }else{ up1(node*2,l,(l+r)/2,p,v); up1(node*2+1,(l+r)/2+1,r,p,v); tree1[node]=(tree1[node*2]^tree1[node*2+1]); } } void up2(int node, int l, int r, int p, int v){ if(l>=p&&p>=r){ tree2[node]=v; }else if(l>p||r<p){ return; }else{ up2(node*2,l,(l+r)/2,p,v); up2(node*2+1,(l+r)/2+1,r,p,v); tree2[node]=(tree2[node*2]^tree2[node*2+1]); } } int cal1(int node, int l, int r, int L, int R){ if(L<=l&&r<=R){ return tree1[node]; }else if(l>R||r<L){ return 0; }else{ return (cal1(node*2,l,(l+r)/2,L,R)^cal1(node*2+1,(l+r)/2+1,r,L,R)); } } int cal2(int node, int l, int r, int L, int R){ if(L<=l&&r<=R){ return tree2[node]; }else if(l>R||r<L){ return 0; }else{ return (cal2(node*2,l,(l+r)/2,L,R)^cal2(node*2+1,(l+r)/2+1,r,L,R)); } } void solve(){ int n,q; cin>>n>>q; vector<int> a(n+1); for(int i=1; i<=n; i++){ cin>>a[i]; if(i%2){ up1(1,1,n,i,a[i]); }else{ up2(1,1,n,i,a[i]); } } while(q--){ int t; cin>>t; if(t==1){ int i,v; cin>>i>>v; if(i%2){ up1(1,1,n,i,v); }else{ up2(1,1,n,i,v); } }else{ int l,r; cin>>l>>r; if((r-l+1)%2){ if(l%2){ cout<<cal1(1,1,n,l,r)<<endl; }else{ cout<<cal2(1,1,n,l,r)<<endl; } }else{ cout<<0<<endl; } } } } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T=1; // cin>>T; while(T--){ solve(); cout<<endl; } 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...