rt。写完发现TLE 30pts,不清楚哪里错了。
//Author: Velvet on Luogu(uid=443675)
#include <bits/stdc++.h>
#define int long long
#define mkpr make_pair
#define fi first
#define se second
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
inline void write(int x){if (x < 0) x = ~x + 1, putchar('-');if (x > 9) write(x / 10);putchar(x % 10 + '0');}
inline void writeln(int x){write(x);putchar('\n');}
inline void writesp(int x){write(x);putchar(' ');}
inline int lowbit(int x) {return x&(-x);}
typedef pair<int,int> Pair;
const int N=200005;
int n,m,k,a[N],b[N],c[N],d[N],sq,cnt,ans[N];
struct ask{int id,l,r,k,bl;}q[N];
bool cmp(ask a,ask b){
return a.bl==b.bl?((a.bl&1)?a.r<b.r:a.r>b.r):a.l<b.l;
}
void add(int x){
cnt+=c[a[x]^k];c[a[x]]++;
}
void del(int x){
c[a[x]]--;cnt-=c[a[x]^k];
}
signed main(){
// ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
n=read();m=read();k=read();sq=sqrt(n);
for(int i=1;i<=n;i++){
a[i]=read();
a[i]^=a[i-1];
}
for(int i=1;i<=m;i++){
int l=read(),r=read();
q[i]=(ask){i,l-1,r,(l-2)/sq+1};
}
sort(q+1,q+m+1,cmp);
int l=1,r=0;
for(int i=1;i<=m;i++){
int L=q[i].l,R=q[i].r;
while(l>L) add(--l);
while(r<R) add(++r);
while(l<L) del(l++);
while(r>R) del(r--);
ans[q[i].id]=cnt;
}
for(int i=1;i<=m;i++)
writeln(ans[i]);
return 0;
}