记录编号 230674 评测结果 AAAAAAAAAA
题目名称 zwei 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 0.532 s
提交时间 2016-02-22 21:24:19 内存使用 0.74 MiB
显示代码纯文本
#include<cstdio>
int a[100005],c[100005],n,m;
int read(){
	int x;char ch;
	while(ch=getchar(),ch<'0'||ch>'9');
	x=ch-48;
	while(ch=getchar(),ch<='9'&&ch>='0')x=x*10+ch-48;
	return x;
}
int lowbit(int x){return x&-x;}
void update(int pos,int x){
	int old=a[pos];
	a[pos]=x;
	for(int i=pos;i<=n;i+=lowbit(i)){
		c[i]^=old;
		c[i]^=x;
	}
}
int getsum(int x){
	int ans=0;
	for(int i=x;i>0;i-=lowbit(i))ans^=c[i];
	return ans;
}
int main(){
	freopen("zwei.in","r",stdin);
	freopen("zwei.out","w",stdout);
	n=read();m=read();
	int tmp;
	for(int i=1;i<=n;++i){
		tmp=read();
		update(i,tmp);
	}
	int x,y,z;
	while(m--){
		x=read();y=read();z=read();
		if(x==0){
			update(y,z); 
		}else{
			printf("%d\n",getsum(y-1)^getsum(z));
		}
	}
//	fclose(stdin);fclose(stdout);
	return 0;
}