蒟蒻st表30pts寄
查看原帖
蒟蒻st表30pts寄
594916
OcTar楼主2023/7/19 09:25

记录

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn = 100010;
int n, m, x;
int a[maxn];
int b[1050000];
int f[maxn][21], LOG[maxn];
void st() {
	for (int i = 2; i <= n + 1; i++) {
		 LOG[i] = LOG[i >> 2] + 1;
	}
	for (int j = 1; j <= 20; 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]);
        }
    }
}
int query(int l, int r) {
    int k = LOG[r - l + 1];
    return max(f[l][k], f[r - (1 << k) + 1][k]);
}
int main() {
	scanf("%d%d%d", &n, &m, &x);
	for (int i = 1; i <= n; i++) {
		int num;
		scanf("%d", &num);
		f[i][0] = b[num ^ x];
		b[num] = i;
	}
	st();
	while (m--) {
		int l, r;
		scanf("%d%d", &l, &r);
		if (query(l, r) >= l) {
			printf("yes\n");
		} else {
			printf("no\n");
		}
	}
	return 0;
}
2023/7/19 09:25
加载中...