记录编号 |
161310 |
评测结果 |
AAAAAAAAAA |
题目名称 |
zwei |
最终得分 |
100 |
用户昵称 |
stdafx.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;
}