#abc473c. Change Schools

    ID: 4395 Type: Default 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 3 Uploaded By: Tags>普及/提高-桶计数最值维护分类讨论

Change Schools

题目描述

现在 AtCoder 高中有 KK 个班级和 NN 名学生,第 ii 名学生 (1iN)(1 \le i \le N) 属于第 AiA_i 个班级。

高橋君将从 99 月起转学到 AtCoder 高中。转学时,他可以从 KK 个班级中任选一个加入。

如果存在某个班级的人数比他所在班级的人数多,他就会难过;否则他就会开心。

请求出:他加入之后会让他开心的班级共有多少个。

输入格式

N K
A_1 A_2 ... A_N

输出格式

输出满足条件的班级个数。

输入示例 1

8 5
3 3 5 5 4 4 3 2

输出示例 1

3

示例 1 说明

原本各班人数为:第 1100 人、第 2211 人、第 3333 人、第 4422 人、第 5522 人。

例如高橋君选择第 55 班,则第 55 班变成 33 人。此时没有任何班级的人数超过 33 人,所以他开心。

而如果他选择第 11 班,则第 11 班变成 11 人。此时第 33 班有 33 人,比 11 多,所以他难过。

当且仅当选择第 3,4,53, 4, 5 班时他会开心,故输出 3

输入示例 2

6 1
1 1 1 1 1 1

输出示例 2

1

示例 2 说明

学校也可能只有 11 个班级。此时无论如何都不存在「别的班级」,他必然开心,答案是 11。这组数据用来检验代码在只有一个班时会不会误判。

输入示例 3

14 8
6 1 5 3 8 4 3 4 3 5 1 2 5 1

输出示例 3

4

示例 3 说明

各班人数为:第 1133 人、第 2211 人、第 3333 人、第 4422 人、第 5533 人、第 6611 人、第 7700 人、第 8811 人。

最大人数是 33,且有三个班级并列最大(第 1,3,51, 3, 5 班)。选这三个班中的任意一个,该班变成 44 人,仍是最多,开心;选第 44 班变成 33 人,与并列最大的 33 持平,也开心。所以答案是 44

这组数据专门用来检验最大值有并列时的处理:若把「最大值」一律当成唯一的来减掉,会算成 33,答案就错了。

约束条件

  • 1N2×1051 \le N \le 2 \times 10^5
  • 1KN1 \le K \le N
  • 1AiK (1iN)1 \le A_i \le K \ (1 \le i \le N)
  • 所有输入值均为整数