#1467. 兴趣社区

兴趣社区

题目描述

在社交平台的兴趣社区运营中,系统需要根据用户的兴趣标签对用户进行分组管理,以优化内容推荐和互动体验。每个用户被分配一个整数类型的兴趣标签(例如,00表示“科技”,11表示“旅游”,22表示“美食”等),若两个用户的标签差值恰好为 dd,则认为他们的兴趣存在较强冲突(例如,“编程”与“设计”的标签差值为 11,可能因资源竞争导致社区讨论混乱)。

运营团队希望从一个初始用户列表 aa 中删除最少的用户,使得剩余用户组成的社区 bb 中,任意两人的兴趣标签差值均不为 dd。这一需求等价于在保留尽可能多用户的前提下,消除所有标签差值为 dd 的用户对,从而构建一个低冲突的兴趣社区。

简单的说 给定一个长度为 nn 的整数序列 a=a1,a2,,aNa=a_1,a_2,\dots,a_N 和一个非负整数 dd 。我们希望从 aa 中删除尽可能少的元素,以获得满足以下条件的序列 bb

  • bibjd|b_i - b_j|\neq d 对于所有 i,j,(1i<jb)i,j , (1 \leq i \lt j \leq |b|)

查找所需的最小删除数。

输入格式

第一行:两个整数 nn 和 dd (1n106)(1 \le n \le 10^6)(0d106(0 \le d \le 10^6)

第二行:nn 个整数 (a1,a2,,an)(a_1, a_2, \dots, a_n)(每个元素满足 (0Ai106 ( 0 \le A_i \le 10^6)

输出格式

一个整数,表示需要删除的最少用户数。

样例

输入

5 2
3 1 4 1 5

输出

1

样例提示

删除 a1=3a_1=3 将生成 b=(1,4,1,5)b=(1,4,1,5) ,它满足所有 i<ji \lt jbibj2|b_i - b_j|\neq 2

限制与约定

对于 40%40\%的数据,保证 (1n100)(1 \le n \le 100)(0d100(0 \le d \le 100) (每个元素满足 (0ai103 ( 0 \le a_i \le 10^3)

对于 100%100 \%的数据, 保证 (1n106)(1 \le n \le 10^6)(0d106(0 \le d \le 10^6) (每个元素满足 (0ai106 ( 0 \le a_i \le 10^6)

  • 时间限制: 2s2 s
  • 空间限制: 256MB256 MB