#P7906. [Ynoi2005] rpxleqxq

[Ynoi2005] rpxleqxq

题目描述

给你一个长度为 nn 的正整数序列 aa,和一个常数 xx

定义 xyx \oplus y 表示 xx 异或 yy

qq 次询问,每次询问给出一段区间 [l,r][l, r],问你这个区间中有多少二元组 (i,j)(i, j) 满足 i<j(aiaj)xi < j \land (a_i \oplus a_j) \le x

输入格式

第一行两个正整数 n,xn, x ,分别表示序列长度和给定的常数。

后面一行 nn 个整数表示序列 aa

第三行一个正整数 qq 表示询问组数。

后面 qq 行,每行两个正整数 l,rl, r 表示一次询问。

输出格式

输出 qq 行,每行一个整数表示答案。

11 4
11 4 5 1 4 1 9 1 9 8 10
5
1 4
1 9
1 9
8 10
8 10
2
12
12
1
1

提示

Idea:Dpair,Solution:Dpair,Code:Dpair,Data:Dpair&nzhtl1477

对于 1%1\% 的数据,为样例。

对于另外 19%19\% 的数据,满足 n,q100n,q\le 100

对于另外 19%19\% 的数据,满足 n,q1000n,q\le 1000

对于另外 19%19\% 的数据,满足 q100q\le 100

对于另外 19%19\% 的数据,满足 ai,x100a_i,x\le 100

对于 100%100\% 的数据,满足 1n,ai,x2×105,1q1061 \le n, a_i, x\le 2\times 10^5, 1 \le q \le 10^6