#HERO006. 训练营分组

训练营分组

题目描述

学校准备举办编程训练营,共有 nn 名学生参加。第 ii 名学生的能力等级为 aia_i。老师需要把所有学生分成若干个训练小组,每名学生必须恰好属于一个小组,小组数量不限。

为了让每个小组中的学生能够逐级交流,一个训练小组必须同时满足以下条件:

  • 组内学生的能力等级互不相同;
  • 将组内学生的能力等级从小到大排列后,相邻两个等级的差都为 11

例如,能力等级为 [1,2,3,4,5][1,2,3,4,5] 的小组符合要求;[1,2,3,5][1,2,3,5] 中的等级不连续,不符合要求;[0,1,1,2][0,1,1,2] 中有重复的等级,也不符合要求。

对于一种分组方案,将人数最少的小组的人数作为该方案的成绩。请合理分组,使这个成绩尽可能大,并输出最大值。

能力等级可能是负数。

输入格式

第一行包含一个正整数 nn,表示参加训练营的学生数量。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n,表示每名学生的能力等级。

输出格式

输出一个整数,表示人数最少的小组人数能够达到的最大值。

7
4 5 2 3 -4 -3 -5
3

数据范围与提示

  • 对于 100%100\% 的数据,1n1051 \leq n \leq 10^5ai109|a_i| \leq 10^9

部分测试数据还满足以下限制:

测试点编号 数据限制
121\sim2 n6n\leq 61ai1001\leq a_i \leq 100
343\sim4 n1000n\leq 10001ai1051\leq a_i\leq 10^5aia_i 互不相同
565\sim6 n105n\leq 10^5aia_i 互不相同
787\sim8 n105n\leq 10^51ai1051\leq a_i \leq10^5
9109\sim10 n105n\leq 10^5109ai109-10^9 \leq a_i \leq 10^9