记录编号 161310 评测结果 AAAAAAAAAA
题目名称 zwei 最终得分 100
用户昵称 Gravatarstdafx.h 是否通过 通过
代码语言 C++ 运行时间 0.366 s
提交时间 2015-05-04 16:41:38 内存使用 1.82 MiB
显示代码纯文本
#include <cstdio>

using namespace std;

int data[200000],n,op,temp,oper,l,r,k1,k2,rs[200000];

int lowbit(int x)
{
	return x&(-x);
}

void modify(int pos,int ds)
{
	while(pos<=n)
	{
		data[pos]^=ds;
		pos+=lowbit(pos);
	}
	return;
}

int sum(int i)
{
	int sk=0;
	while(i>0)
	{
		sk^=data[i];
		i-=lowbit(i);
	}
	return sk;
}

int main()
{
	freopen("zwei.in","r",stdin);
	freopen("zwei.out","w",stdout);
	scanf("%d%d",&n,&op);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&temp);
		rs[i]=temp;
		modify(i,temp);
	}
	for(int i=1;i<=op;i++)
	{
		scanf("%d%d%d",&oper,&l,&r);
		if(oper==1)
		{
			k1=sum(l-1);
			k2=sum(r);
			printf("%d\n",k1^k2);
		}
		else
		{
			modify(l,rs[l]^r);
			rs[l]=r;
		}
	}
	return 0;
}