这道题蓝桥杯我记得 a 了,在另一个题库也 a 了,为什么在洛谷 re,吸氧变成了 20tps
#include <iostream>
// #include <bits/stdc++.h>
// #define abs(a) (a<0?-a:a)
#define max(a,b) (a>b?a:b)
// #define min(a,b) (a<b?a:b)
// #define int __int128
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5+10;
int lg[N],f[N][22];
int n,m,l,r,a[N];
int p[N],t[N],T;
inline void build(int a[]){
f[1][0] = a[1];
for(int i = 2; i <= n; i++){
lg[i] = lg[(i>>1)] + 1;
f[i][0] = a[i];
}
for(int j = 1; j < 18; j++)
for(int i = 1; i+(1<<j)-1 <= n; i++)
f[i][j] = max(f[i][j-1],f[i+(1<<j-1)][j-1]);
}
inline int find(int l,int r){
return max(f[l][lg[r-l+1]],f[r-(1<<lg[r-l+1])+1][lg[r-l+1]]);
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(NULL);
cin >> n >> m >> T;
for(int i = 1; i <= n; i++){
cin >> a[i];
p[i] = t[a[i]^T];
t[a[i]] = i;
}
build(p);
for(int i = 1; i <= m; i++){
cin >> l >> r;
if(max(f[l][lg[r-l+1]],f[r-(1<<lg[r-l+1])+1][lg[r-l+1]]) >= l)
cout << "yes\n";
else cout << "no\n";
}
return 0;
}