# include <bits/stdc++.h>
using namespace std;
long long n,q,a[100005],ty,w,idx,val,tree[5][1000005],ans,x,ri,le;
void update(int node, int le, int ri, int idx, int val, int w)
{
if (le>idx || ri<idx) return;
if (idx==le && idx==ri)
{
tree[w][node]^=val;
return ;
}
long long mid=(le+ri)/2;
update(2*node, le, mid, idx, val , w);
update(2*node+1, mid+1, ri , idx, val, w);
tree[w][node]=tree[w][2*node]^tree[w][2*node+1];
}
long long getans(int node, int le, int ri, int start, int end, int w)
{
if (le>end || ri<start) return 0;
if (le>=start && ri<=end)
{
return tree[w][node];
}
long long mid=(le+ri)/2;
long long p1=getans(2*node, le, mid, start, end,w);
long long p2=getans(2*node+1, mid+1, ri, start, end,w);
return p1^p2;
}
int main()
{
cin>>n>>q;
for (int i=1; i<=n; i++)
{
cin>>a[i];
if (i%2==1)
{
update(1,1,n,i,a[i],1);
}
else
{
update(1,1,n, i,a[i],0);
}
}
//cout<<1<<endl;
for (int i=1; i<=q; i++)
{
cin>>ty;
if (ty==1)
{
cin>>idx>>val;
w=val^a[idx];
update(1,1,n, idx, w, idx%2);
a[idx]=val;
}
else
{
cin>>le>>ri;
x=(ri-le+1);
if (x%2==0)
{
cout<<0<<endl;
return 0;
}//cout<<le<<" "<<ri<<" ";
cout<<getans(1,1,n,le,ri,le%2)<<endl;
}
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
416 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
124 ms |
11640 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |