#2524. 变换高度----cx201803

变换高度----cx201803

Background

小Q是一个牛逼的少年,他最近无聊的在纸上画了n个塔.第i个塔的高度是hi。他会对塔进行一种操作,操作定义为在某个高度H的时候,如果第i个塔的高度高于H,我们必须把这个塔的高度变成H. 这样一次操作的代价是从所有塔里面移除的1×1方块的总和。如果一次操作的代价小于等于k,那么我们就称这个操作为友好操作(k≥n)。 现在请你计算最少需要多少次友好操作,才能使得所有的塔的高度都变成相同。显然,这个肯定有答案.下面图可以参考(样例1 ) :

Input

输入第一行是两个整数n和k, 表示塔的数量和操作相关的系数k。 第二行有n个空格隔开的整数h1,h2,...hn。

Output

输出只有一个整数,表示最少需要的友好操作的数量,使得每个塔的高度都相同。

Samples

5 5
3 1 2 2 4
2
4 5
2 3 4 5
2

Limitation

样例1如图所示,需要2个友好操作,第一次设定H为2,代价为3,第二次设定H为1,代价为4.

对于50%的数据,1≤n≤2000,hi≤2000。

对于100%的数据,1≤n≤2×10^5,n≤k≤10^9,hi≤2×10^5。