记录编号 74906 评测结果 AAAAAAAAAA
题目名称 zwei 最终得分 100
用户昵称 Gravatarcstdio 是否通过 通过
代码语言 C++ 运行时间 0.391 s
提交时间 2013-10-26 18:07:31 内存使用 0.70 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int SIZEN=100001;
int sp[SIZEN]={0};
int n,m;
int lowbit(int x){
	return x&(-x);
}
void change(int x,int k){//第x项再异或上k
	while(x<=n){
		sp[x]^=k;
		x+=lowbit(x);
	}
}
int getsp(int x){
	int ans=0;
	while(x>0){
		ans^=sp[x];
		x-=lowbit(x);
	}
	return ans;
}
int getseg(int l,int r){
	return getsp(r)^getsp(l-1);
}
void op1(int x,int y){//x修改成y
	change(x,y^getseg(x,x));
}
void op2(int l,int r){
	printf("%d\n",getseg(l,r));
}
void read(void){
	scanf("%d%d",&n,&m);
	int i,temp;
	for(i=1;i<=n;i++){
		scanf("%d",&temp);
		change(i,temp);
	}
}
void work(void){
	int i;
	int opt;
	int x,y,l,r;
	for(i=1;i<=m;i++){
		scanf("%d",&opt);
		if(opt==0){
			scanf("%d%d",&x,&y);
			op1(x,y);
		}
		else if(opt==1){
			scanf("%d%d",&l,&r);
			op2(l,r);
		}
	}
}
int main(){
	freopen("zwei.in","r",stdin);
	freopen("zwei.out","w",stdout);
	read();
	work();
	return 0;
}