P16318 [ICPC 2023 Jinan R] 彩虹子数组

题目描述

《彩虹数列》是一款紧张刺激的运气类与拍卖类桌游。玩家可以赌运气抽取更多卡牌,也可以用货币购买其它卡牌,目的是用每种颜色的卡牌构成尽量长的数字序列。接下来我们考虑一道和游戏相关的问题。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/yqopnfhc.png) Instagram 用户 @freethemeeple 拍摄的照片 ::: 给定长度为 $n$ 的序列 $a_1, a_2, \cdots, a_n$,称它的连续子数组 $a_l, a_{l + 1}, a_{l + 2}, \cdots, a_r$ 为彩虹子数组,若对于所有 $l \le i < r$ 都满足 $a_{i + 1} - a_i = 1$。特别地,长度为 $1$ 的子数组总是彩虹子数组。 您可以执行至多 $k$ 次操作。每次操作您可以将序列中的一个元素增加或减少一。求完成操作后,最长彩虹子数组的长度最大是多少。

输入格式

有多组测试数据。第一行输入一个整数 $T$ 表示测试数据组数,对于每组测试数据: 第一行输入两个整数 $n$ 和 $k$($1 \le n \le 5 \times 10^5$,$0 \le k \le 10^{15}$)表示序列的长度以及您最多能执行几次操作。 第二行输入 $n$ 个整数 $a_1, a_2, \cdots, a_n$($1 \le a_i \le 10^9$)表示序列。 保证所有数据 $n$ 之和不超过 $5 \times 10^5$。

输出格式

每组数据输出一行一个整数,表示至多执行 $k$ 次操作后,最长彩虹子数组的长度最大是多少。

说明/提示

对于第一组样例数据,我们可以执行 $4$ 次操作,并将序列变为 $\{7, 3, 4, 5, 6, 11, 7\}$。最长彩虹子数组是 $\{3, 4, 5, 6\}$,所以答案是 $4$。 对于第二组样例数据,我们不能执行任何操作。最长彩虹子数组是 $\{3, 4, 5\}$,所以答案是 $3$。 对于第三组样例数据,我们可以执行 $6$ 次操作,并将序列变为 $\{-1, 0, 1, 2, 3\}$。整个序列都是彩虹子数组,所以答案是 $5$。