比赛 20131026 评测结果 AAAAAAAAAA
题目名称 zwei 最终得分 100
用户昵称 1azyReaper 运行时间 0.268 s
代码语言 C++ 内存使用 1.07 MiB
提交时间 2015-09-12 20:51:39
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#define MAX 100010
using namespace std;
int m,n,c[MAX],a[MAX];
inline int get()
{
	int x=0;
	char ph=getchar();
	
	while(ph<'0'||ph>'9')
		ph=getchar();
	for(;ph>='0'&&ph<='9';ph=getchar())
		x=x*10+ph-'0';
	return x;
}
int bitchange(int x)
{
	return x&(-x);
}
int insert(int x,int y)
{
	while(x<=100005)
	{
		c[x]^=y;
		x+=bitchange(x);
	}
	return 0;
}
int pub(int x)
{
	int temp=0;
	while(x>0)
	{
		temp^=c[x];
		x-=bitchange(x);
	}
	return temp;
}
int main()
{
	freopen("zwei.in","r",stdin);
	freopen("zwei.out","w",stdout);
	n=get();
	m=get();
	for(int i=1;i<=n;i++)
	{
		a[i]=get();
		insert(i,a[i]);
	}
	for(int i=1;i<=m;i++)
	{
		int q,x,y;
		q=get();
		if(q)
		{
			x=get();y=get();
			int s=pub(y)^pub(x-1);
			printf("%d\n",s);
		}
		else
		{
			x=get();
			y=get();
			insert(x,a[x]);
			insert(x,y);
			a[x]=y;
		}
	}
	return 0;
}