给定一个严格递增的整数关键字数组 xi,以及一个非负整数常数 ε。
需要将原数组划分为尽量少的若干连续子数组,使得对于每个子数组 [l…r],都存在一个线性函数
f(x)=k⋅x+b
能够预测关键字 xi 在该子数组中的相对位置 i−l,且误差不超过 ε。
形式化地,对于第 j 个子数组 [lj…rj],需要存在系数 kj,bj,不要求为整数,使得对所有 i∈[lj,rj] 都有:
∣fj(xi)−(i−lj)∣≤ε
且
fj(x)=kjx+bj
输入格式
第一行包含两个整数 n,ε:
2≤n≤106,0≤ε≤n
第二行包含 n 个严格递增的整数 xi:
−2⋅109≤x1<x2<⋯<xn≤2⋅109
输出格式
输出一个整数 m,表示满足要求的最少子数组数量。
样例
8 0
1 2 3 4 7 10 13 16
2
样例说明
可以划分为两个子数组:
[1, 2, 3, 4]
[7, 10, 13, 16]
第一个子数组可以用 f(x)=x−1 精确预测位置。第二个子数组可以用
f(x)=3x−7=31x−37
精确预测位置。