给我们一个长度为n的整数序列a: a1,a2,…,ai,…,an,定义f(l,r)如下:
F(l,r)=al&al+1&al+2&…&ar (显然,l应该不大于r,&为位与运算符)
现向我们发出q次询问,每次询问给我们两个值:k和l,请你帮忙找出最大的r(r>=l)值,使得f(l,r)>=k成立。
给我们一个长度为n的整数序列a: a1,a2,…,ai,…,an,定义f(l,r)如下:
F(l,r)=al&al+1&al+2&…&ar (显然,l应该不大于r,&为位与运算符)
现向我们发出q次询问,每次询问给我们两个值:k和l,请你帮忙找出最大的r(r>=l)值,使得f(l,r)>=k成立。
第一行包含一个整数t(1≤t≤1e4)——测试用例的数量。
对于每个测试用例:
第一行一个整数n(1<=n<=2e5):整数序列a的长度;
第二行共n个整数a1,a2,…,ai,…,an(1<=ai<=1e9),为序列a的n个元素。
第三行一个整数q(1<=q<=1e5),为询问次数。
接下来共q行,对应q次询问,每行两个整数l和k(1≤l≤n, 1≤k≤1e9):l为子序列的左边界,k值见题中描述。
保证所有测试用例的 n 之和与 q 之和均不超过 2e5 。
输出共t行,每个测试用例一行。
对于每个测试用例,共输出q个整数(空格隔开),第i个整数为第i次询问时候能够球的的最大整数r(l<=r<=n): r为满足F(l,r)>=k的最大右边界值。特别提醒,如果不存在满足要求的r值,则输出:-1。
3 5 15 14 17 42 34 3 1 7 2 15 4 5 5 7 5 3 1 7 4 1 7 5 7 2 3 2 2 7 19 20 15 12 21 7 11 4 1 15 4 4 7 12 5 7
2 -1 5 1 5 2 2 2 6 -1 5