Wrong answer on test 5
谢谢
#include<bits/stdc++.h>
int read()
{
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
return x*f;
}
#define MAXN 200005
int x[MAXN],s[MAXN];
long long sum[MAXN];
std::map<int,std::vector<int> >t[2];
int main()
{
int n=read(),q=read();
for(int i=1;i<=n;i++)
{
x[i]=read();
s[i]=s[i-1]^x[i];
sum[i]=sum[i-1]+x[i];
t[i%2][s[i]].push_back(i);
}
for(int i=1;i<=q;i++)
{
int l=read(),r=read();
if(sum[r]-sum[l-1]==0)
printf("0\n");
else if(s[l-1]!=s[r])
printf("-1\n");
else if((r-l)%2==0||((r-l)%2!=0&&(x[l]==0||x[r]==0)))
printf("1\n");
else
{
if(*std::lower_bound(t[l&1][s[l-1]].begin(),t[l&1][s[l-1]].end(),l)<r)
printf("2\n");
else
printf("-1\n");
}
}
return 0;
}