CF1539C Stable Groups

题目描述

有 $n$ 个学生,编号从 $1$ 到 $n$。第 $i$ 个学生的水平为 $a_i$。你需要将学生分成若干个稳定小组。如果一个小组内学生水平排序后,相邻两个元素的差值都不超过 $x$,则称该小组是稳定的。 例如,如果 $x = 4$,则水平为 $[1, 10, 8, 4, 4]$ 的小组是稳定的(因为 $4 - 1 \le x$,$4 - 4 \le x$,$8 - 4 \le x$,$10 - 8 \le x$),而水平为 $[2, 10, 10, 7]$ 的小组不是稳定的($7 - 2 = 5 > x$)。 除了这 $n$ 个学生外,老师还可以额外邀请至多 $k$ 个水平任意的学生(水平由老师自行决定)。请你求出老师能够将所有学生(包括新邀请的)分成的最少稳定小组数。 例如,如果有两个学生,水平为 $1$ 和 $5$,$x = 2$,且 $k \ge 1$,你可以邀请一个水平为 $3$ 的学生,然后将所有学生分成一个稳定小组。

输入格式

第一行包含三个整数 $n$、$k$、$x$($1 \le n \le 200\,000$,$0 \le k \le 10^{18}$,$1 \le x \le 10^{18}$)——初始学生人数、可额外邀请的学生人数以及允许的最大水平差。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^{18}$)——每个学生的水平。

输出格式

输出一个整数,表示你能将所有学生分成的最少稳定小组数。

说明/提示

在第一个样例中,你可以邀请两个水平为 $2$ 和 $11$ 的学生。然后你可以将学生分成两个稳定小组: 1. $[1, 1, 2, 5, 8, 11, 12, 13]$, 2. $[20, 22]$。 在第二个样例中,你不能邀请新学生,所以需要 $3$ 个小组: 1. $[1, 1, 5, 5, 20, 20]$ 2. $[60, 70, 70, 70, 80, 90]$ 3. $[420]$。 由 ChatGPT 4.1 翻译