#include "bits/stdc++.h"
#define ll long long
using namespace std;
const ll maxn = 2*1e5+5;
ll n;
ll v[maxn];
ll oseg[4*maxn];
ll eseg[4*maxn];
void build(ll nd,ll s,ll e){
if(s == e){
oseg[nd] = v[s] * (s%2 == 1);
eseg[nd] = v[s] * (s%2 == 0);
return;
}
ll mid = s + (e-s)/2;
build(2*nd,s,mid);
build(2*nd+1,mid+1,e);
oseg[nd] = (oseg[2*nd]^oseg[2*nd+1]);
eseg[nd] = (eseg[2*nd]^eseg[2*nd+1]);
}
void update(ll nd,ll s,ll e,ll x){
if(s > x || e < x){
return;
}
if(s == e){
oseg[nd] = v[s] * (s%2 == 1);
eseg[nd] = v[s] * (s%2 == 0);
return;
}
ll mid = s + (e-s)/2;
update(2*nd,s,mid,x);
update(2*nd+1,mid+1,e,x);
oseg[nd] = (oseg[2*nd]^oseg[2*nd+1]);
eseg[nd] = (eseg[2*nd]^eseg[2*nd+1]);
}
ll get(ll nd,ll s,ll e,ll l,ll r){
if(s > r || e < l){
return 0;
}
if(l <= s && e <= r){
if(l%2){
return oseg[nd];
}else{
return eseg[nd];
}
}
ll mid = s + (e-s)/2;
return (get(2*nd,s,mid,l,r) ^ get(2*nd+1,mid+1,e,l,r));
}
int main(){
ll q;
cin>>n>>q;
for(ll i = 1;i<=n;i++){
cin>>v[i];
}
build(1,1,n);
while(q--){
ll tp;
cin>>tp;
if(tp == 1){
ll id,x;
cin>>id>>x;
v[id] = x;
update(1,1,n,id);
}else{
ll l,r;
cin>>l>>r;
cout<<get(1,1,n,l,r)<<endl;
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |