低谷(hard)
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这是本题的困难版本。在这个版本中,n的数据范围更大。同时,本题困难版本仅在同步赛中出现,以替代校内赛的交互题。
有一个长度为n的数组,现在可以对其进行k次操作,每次操作过程如下:
  • 对于数组a,选定一个下标i(1\le i\le n),令a_i的值减一。
现定义低谷:
  • 对于数组a,若对于下标i(2\le i\le n-1),使得a_i < a_{i-1}a_i < a_{i+1},则称i为数组a的一个低谷。
lzt想知道k次操作后,该数组的低谷最多有多少个。

输入描述:

共两行。第一行包含两个整数n,k(1 \le n \le 10^5, 1 \le k \le 10^9),分别表示数组长度n和操作次数k

第二行包含n个整数a_1,a_2,...,a_n(1 \le a_i \le 10^9),表示数组a

输出描述:

输出一行一个整数ans,表示数组的低谷最大个数。
示例1

输入

复制
7 3
2 2 3 4 6 2 3

输出

复制
3

说明

将数组中第二个数减1,第四个数减2,就能得到三个低谷。