游戏

题目描述

Alice和Bob在做游戏。Alice写下了 nn 个不同的数字,又选取了数字 KK。Alice让Bob进行一些操作,每次操作如下:

  1. 选取两个整数 x,yx, y ,它们的差值不超过 KK ,即 xy<=K|x - y| <= K
  2. 删除它们中较小的数字

Bob的任务是,尽可能多的进行这样的操作。当然Bob有可能一次操作都做不了。那么,Bob最多可以进行多少次操作?

输入格式

第一行两个整数 nKn, K (1n105,1K10121 \le n \le 10^5, 1 \le K \le 10^{12})
下面一行 nn 个整数,其中第 ii 个数为 aia_i (0ai10120 \le a_i \le 10^{12}),代表Alice写下的数字

输出格式

输出一个整数,代表Bob最多可以进行的操作次数

测试样例

样例 1
输入:

5 1
3 7 4 1 5 

输出:

2
#include <bits/stdc++.h>
#define ll long long
using namespace std;

vector<ll> a;
ll n, k, ans = 0,t;
int main() {
    cin >> n >> k;
    for (ll i = 0; i < n;++i){
        scanf("%lld", &t);
        a.emplace_back(t);
    }
    sort(a.begin(), a.end());
    t = -(k+1);
    for(auto&i:a){
        if(i-t<=k)
            ++ans;
        t = i;
    }
    cout << ans;
    return 0;
}