이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mid (start+end)/2
#define faster ios_base::sync_with_stdio(false);cin.tie(NULL);
int dizi[200005],tese[800005],cise[800005],sum=0;
void build(int node,int start,int end){
if(start==end){
if(start%2==1)tese[node]=dizi[start];
else cise[node]=dizi[start];
return ;
}
build(node*2,start,mid),build(node*2+1,mid+1,end);
tese[node]=tese[node*2]^tese[node*2+1];
cise[node]=cise[node*2]^cise[node*2+1];
}
void querytek(int node,int start,int end,int l,int r){
if(start>end || start>r || end<l)return;
if(start>=l && end<=r){
sum^=tese[node];
return ;
}
querytek(node*2,start,mid,l,r),querytek(node*2+1,mid+1,end,l,r);
}
void querycift(int node,int start,int end,int l,int r){
if(start>end || start>r || end<l)return;
if(start>=l && end<=r){
sum^=cise[node];
return ;
}
querycift(node*2,start,mid,l,r),querycift(node*2+1,mid+1,end,l,r);
}
void updatetek(int node,int start,int end,int pos,int val){
if(!(start<=pos && end>=pos))return ;
if(start==end && start==pos){
tese[node]=val;
return ;
}
updatetek(node*2,start,mid,pos,val),updatetek(node*2+1,mid+1,end,pos,val);
tese[node]=tese[node*2]^tese[node*2+1];
}
void updatecift(int node,int start,int end,int pos,int val){
if(!(start<=pos && end>=pos))return ;
if(start==end && start==pos){
cise[node]=val;
return ;
}
updatecift(node*2,start,mid,pos,val),updatecift(node*2+1,mid+1,end,pos,val);
cise[node]=cise[node*2]^cise[node*2+1];
}
int32_t main(){
faster
int n,q;cin>>n>>q;
for(int i=1;i<=n;i++)cin>>dizi[i];
build(1,1,n);
while(q--){
int t,l,r;cin>>t>>l>>r;
if(t==1){
if(l%2==1)updatetek(1,1,n,l,r);
else updatecift(1,1,n,l,r);
}
else{
sum=0;
if(l%2==1)querytek(1,1,n,l,r);
else querycift(1,1,n,l,r);
cout<<sum<<'\n';
}
}
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... |