记录编号 429781 评测结果 AAAAAAAAAA
题目名称 zwei 最终得分 100
用户昵称 Gravatarlenibomb 是否通过 通过
代码语言 C++ 运行时间 0.342 s
提交时间 2017-07-28 10:55:23 内存使用 1.05 MiB
显示代码纯文本
#include<cstdio>
using namespace std;
int n,m,sum[100050],p[100050];
int lowbit(int x){
	return x&(-x);
}
void Add(int x,int y){
	while(x<=n){
		sum[x]=sum[x]^y;
		x+=lowbit(x);
	} 
}
int Get(int x){
	int ans=0;
	while(x>0){
		ans=ans^sum[x];
		x-=lowbit(x);
	}
	return ans;
}
int x,y,z;
int main(){
	freopen("zwei.in","r",stdin);
	freopen("zwei.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&x);
		Add(i,x);
		p[i]=x;
	}
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&x,&y,&z);
		if(x==0){
			Add(y,p[y]^z);
			p[y]=z;
		}
		else{
			int Ans=Get(z)^Get(y-1);
			printf("%d\n",Ans);
		}
	}
}