#include <bits/stdc++.h>
using namespace std;
const int N = 1000010;
int n, k, a[N], c[(1 << 20)];
int main() {
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; ++i) scanf("%d", a + i);
for (int i = 1; i <= n; ++i) {
int sum = 0;
for (int j = 20; j >= 0; --j) {
if ((k >> j) & 1) {
if ((a[i] >> j) & 1) {
c[sum + (1 << j)]++;
c[sum + (1 << (j + 1))]--;
}
else {
c[sum]++;
c[sum + (1 << j)]--;
sum += 1 << j;
}
}
else {
sum = sum + ((a[i] >> j & 1) << j);
}
}
}
int ans = c[0];
for (int i = 1; i < (1 << 20); ++i) {
c[i] += c[i - 1];
ans = max(ans, c[i]);
}
printf("%d", ans);
return 0;
}```
感谢大佬