This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int DEPTH = 18;
const int LEAF = (1<<(DEPTH-1));
const int NB_NODES = (1<<DEPTH);
const int MAXI = 2 * 100000+2;
struct XorTree{
int vals[NB_NODES];
void init(){
for(int i = 0;i<NB_NODES;i++){
vals[i]=0;
}
};
void update(int pos,int val){
int node = pos+LEAF;
int varia = val^vals[node];
while(node!=1){
vals[node]^=varia;
node/=2;
}
vals[1]^=varia;
}
int _getVal(int gauche,int droite){
if(droite<gauche){
return 0;
}
if(gauche&1){
return vals[gauche]^_getVal(gauche+1,droite);
}
if(!(droite&1)){
return vals[droite]^_getVal(gauche,droite-1);
}
return _getVal(gauche/2,droite/2);
}
int getVal(int gauche,int droite){
return _getVal(gauche+LEAF,droite+LEAF);
}
};
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
XorTree XT[2];
XT[0].init();
XT[1].init();
int n;cin>>n;
int q;cin>>q;
vector<int> nums(n);
for(int i = 0 ; i < n ; i++){
cin>>nums[i];
XT[i%2].update(i/2,nums[i]);
}
for(int _=0;_<q;_++){
int type;cin>>type;
if(type==1){
int pos;cin>>pos;pos--;
int val;cin>>val;
XT[pos%2].update(pos/2,val);
}else{
int l,r;cin>>l>>r;
l--;r--;
if(((r-l)&1)){
cout<<0<<endl;
}else{
if((l/2-1)<0){
int ans = XT[r%2].getVal(0,r/2);
cout<<ans<<endl;
}else{
int ans = XT[r%2].getVal(0,r/2)^XT[r%2].getVal(0,l/2-1);
cout<<ans<<endl;
}
}
}
}
return 0;
}
/*
int n;cin>>n;
int q;cin>>q;
vector<int> nums(n);
for(int i = 0 ; i < n ; i++){
cin>>nums[i];
}
int XorPref[n];
int acts[2] = {0,0};
for(int i = 0;i<n;i++){
acts[i%2]^=nums[i];
XorPref[i]=acts[i%2];
}
for(int _=0;_<q;_++){
int type;cin>>type;
if(type==1){
int pos;cin>>pos;pos--;
int val;cin>>val;
nums[pos]=val;
}else{
int l,r;cin>>l>>r;
l--;r--;
if(((r-l)&1)){
cout<<0<<endl;
}else{
if((l-2)<0){
int ans = XorPref[r];
cout<<ans<<endl;
}else{
int ans = XorPref[r]^XorPref[l-2];
cout<<ans<<endl;
}
}
}
}
return 0;
*/
# | 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... |