CF2093G Shorten the Array

题目描述

一个长度为 $m$ 的数组 $b$ 的美观度定义为所有可能数对 $1 \le i \le j \le m$ 中 $b_i \oplus b_j$ 的最大值,其中 $x \oplus y$ 表示数字 $x$ 和 $y$ 的[按位异或](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。我们将数组 $b$ 的美观度记为 $f(b)$。 如果一个数组 $b$ 满足 $f(b) \ge k$,则称该数组是美观的。 最近,Kostya 从商店购买了一个长度为 $n$ 的数组 $a$。他认为这个数组太长了,因此计划从中截取一个美观的子数组。也就是说,他需要选择两个数字 $l$ 和 $r$($1 \le l \le r \le n$),使得子数组 $a_{l \dots r}$ 是美观的。这样的子数组的长度为 $r - l + 1$。整个数组 $a$ 也被视为一个子数组(此时 $l = 1$ 且 $r = n$)。 你的任务是找出数组 $a$ 中最短美观子数组的长度。如果不存在美观的子数组,则输出 $-1$。

输入格式

第一行包含测试用例的数量 $t$($1 \le t \le 10^4$)。 接下来是 $t$ 个由两行组成的测试块: 每个测试块的第一行包含两个整数 $n$ 和 $k$($1 \le n \le 2 \cdot 10^5$,$0 \le k \le 10^9$)。 每个测试块的第二行包含数组 $a$,由 $n$ 个整数组成($0 \le a_i \le 10^9$)。 保证所有测试用例的 $n$ 之和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一个整数——满足 $f(a_{l \dots r}) \ge k$ 的最短子数组 $(l, r)$ 的长度。如果不存在这样的子数组,则输出 $-1$。

说明/提示

翻译由 DeepSeek V3 完成