Submission #1280274

#TimeUsernameProblemLanguageResultExecution timeMemory
1280274akmuhammet_sXORanges (eJOI19_xoranges)C++20
100 / 100
115 ms4564 KiB
#include "bits/stdc++.h"
using namespace std;
#define mod 998244353
#define ll long long
#define ff first
#define ss second
#define pb push_back
#define N 24
#define maxn 200005

int b[4*maxn][2];

void upd(int nd,int l,int r,int e,int val,int x){
	if(l>e or r<e) return;
	if(l==r){
		b[nd][x]=val;
		return;
	}
	int md=(l+r)/2;
	upd(nd*2,l,md,e,val,x);
	upd(nd*2+1,md+1,r,e,val,x);
	b[nd][x]=b[nd*2][x]^b[nd*2+1][x];
}

int get(int nd,int l,int r,int e,int x){
	if(l>e) return 0;
	if(r<=e) return b[nd][x];
	int md=(l+r)/2;
	return get(nd*2,l,md,e,x)^get(nd*2+1,md+1,r,e,x);
}

void solve(){
	int n,q;
	cin>>n>>q;
	int a[n+5];
	for(int i=1; i<=n; i++) cin>>a[i];
	for(int i=1; i<=n; i++){
		upd(1,1,maxn,(i+1)/2,a[i],i%2);
	}
	for(int i=1; i<=q; i++){
		int x;
		cin>>x;
		if(x==1){
			int x,val;
			cin>>x>>val;
			upd(1,1,maxn,(x+1)/2,val,x%2);
		}else{
			int l,r;
			cin>>l>>r;
			if((r-l+1)%2==0){
				cout<<0<<'\n';
				continue;
			}
			int ans=get(1,1,maxn,(r+1)/2,r%2)^get(1,1,maxn,(l-1)/2,r%2);
			cout<<ans<<'\n';
		}
	}
}
 
int main(){
	// freopen("in.txt","w",stdout);
	// freopen("out.txt","r",stdin);
	ios_base::sync_with_stdio(0); cin.tie(0);
	ll t=1;
	// cin>>t;
	while(t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...