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;
typedef long long ll;
int seg1[600009];
int seg2[600009];
int v[600009];
void build(int id, int l, int r)
{
if(l==r)
{
if(l%2==1)
{
return;
}
seg1[id]=v[l];
return;
}
int mid=(l+r)/2;
build(id*2, l, mid);
build(id*2+1, mid+1, r);
seg1[id]=seg1[id*2]^seg1[id*2+1];
}
void update(int l, int r, int u, int v, int k)
{
if(l==r && l==v)
{
seg1[u]=k;
return;
}
if(v<l || v>r)
{
return;
}
int mid=(l+r)/2;
update(l, mid, u*2, v, k);
update(mid+1, r, u*2+1, v, k);
seg1[u]=seg1[u*2]^seg1[u*2+1];
}
int query(int id, int l, int r, int a, int b, int res)
{
if(a<=l && b>=r)
{
return seg1[id]^res;
}
if(l>b || r<a)
{
return res;
}
int mid=(l+r)/2;
res=query(id*2, l, mid, a, b, res);
res=query(id*2+1, mid+1, r, a, b, res);
return res;
}
void build2(int id, int l, int r)
{
if(l==r)
{
if(l%2==0)
{
return;
}
seg2[id]=v[l];
return;
}
int mid=(l+r)/2;
build2(id*2, l, mid);
build2(id*2+1, mid+1, r);
seg2[id]=seg2[id*2]^seg2[id*2+1];
}
void update2(int l, int r, int u, int v, int k)
{
if(l==r && l==v)
{
seg2[u]=k;
return;
}
if(v<l || v>r)
{
return;
}
ll mid=(l+r)/2;
update2(l, mid, u*2, v, k);
update2(mid+1, r, u*2+1, v, k);
seg2[u]=seg2[u*2]^seg2[u*2+1];
}
int query2(int id, int l, int r, int a, int b, int res)
{
if(a<=l && b>=r)
{
return seg2[id]^res;
}
if(l>b || r<a)
{
return res;
}
ll mid=(l+r)/2;
res=query2(id*2, l, mid, a, b, res);
res=query2(id*2+1, mid+1, r, a, b, res);
return res;
}
int main()
{
int n, q;
cin>>n>>q;
for(int i=0;i<n;i++)
{
cin>>v[i];
}
build(1, 0, n-1);
build2(1, 0, n-1);
while(q--)
{
int x, l, r;
cin>>x>>l>>r;
if(x==1)
{
l--;
if(l%2==0)
{
update(0, n-1, 1, l, r);
}
else
{
update2(0, n-1, 1, l, r);
}
}
else
{
l--;
r--;
if((r-l)%2==1)
{
cout<<0<<endl;
}
else
{
if(l%2==0)
{
cout<<query(1, 0, n-1, l, r, 0)<<endl;
}
else
{
cout<<query2(1, 0, n-1, l, r, 0)<<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... |