竹鼠饲养物语
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\,\,\,\,\,\,\,\,\,\,清楚进店,见一老妪端坐其中,竟是当年卖糖葫芦那厮。
\,\,\,\,\,\,\,\,\,\,老妪也认出了清楚,率先开口:“有缘千里来相会,你买下竹鼠,我带你去探寻宝物”。
\,\,\,\,\,\,\,\,\,\,言毕,见清楚执意要买,又添一句:“还需出饲料钱。”
\,\,\,\,\,\,\,\,\,\,鼠鼠快速成长饲料一共分为 m 个等级,初始时全部竹鼠都是零级竹鼠,投喂一袋“鼠鼠快速成长饲料 \rm I ”可以升级为一级竹鼠,继续投喂“鼠鼠快速成长饲料 \rm II ”可以升级为二级竹鼠,……。需要注意的是,你不能越级投喂,例如,向零级竹鼠投喂“鼠鼠快速成长饲料 \rm II ”没有任何效果。
\,\,\,\,\,\,\,\,\,\,清楚一共有 n 袋饲料和无限多的零级竹鼠,问最多可以进行多少次有效投喂。

输入描述:

\,\,\,\,\,\,\,\,\,\,第一行上输入两个整数 n,m\ (1\le n\le 10^5;\ 1\le m \le 10^9) 代表饲料数量和饲料等级数量。
\,\,\,\,\,\,\,\,\,\,第二行输入 n 个整数 a_1,a_2,\dots,a_n\ (1\le a_i \le m) 代表每一袋饲料的等级。

输出描述:

\,\,\,\,\,\,\,\,\,\,在一行上输出一个整数,代表清楚至多进行的有效投喂次数
示例1

输入

复制
7 5
1 1 1 2 2 3 5

输出

复制
6

说明

\,\,\,\,\,\,\,\,\,\,● 可以将第一只竹鼠直接升到三级,此时剩下 4 袋饲料 \{1,1,2,5\}
\,\,\,\,\,\,\,\,\,\,● 将第二只竹鼠升到两级,此时剩下 2 袋饲料 \{1,5\}
\,\,\,\,\,\,\,\,\,\,● 将第三只竹鼠升到一级,此时剩下最后 1 袋饲料 \{5\}
\,\,\,\,\,\,\,\,\,\,最后一袋饲料无法使任何竹鼠升级,故最终使用了 6 袋饲料。
示例2

输入

复制
6 114514
1 1 4 5 1 4

输出

复制
3