#5473. CSES1665 编程公司

0

CSES1665 编程公司

#CS1665. 编程公司

编程公司

题目背景

翻译自 CSES-1665 题。

题目描述

你的公司有 n 名程序员,每个程序员的技能等级在 0 到 100100100 之间。你的任务是将这些程序员分成若干个团队,使得他们能够顺利地一起工作。

根据你的经验,当程序员的技能水平相差不大时,团队工作会更加顺利。因此,创建一个团队的惩罚是团队中最强和最弱程序员的技能等级差。

你需要计算有多少种方法可以将这些程序员分成若干个团队,使得所有团队的惩罚之和不超过 x。

输入格式

第一行包含两个整数 n 和 x,分别表示程序员的数量和最大允许的惩罚总和。

第二行包含 n 个整数 t1,t2,…,tnt_1, t_2, \dots, t_nt1​,t2​,…,tn​,表示每个程序员的技能等级。

输出格式

输出一个整数,表示有效的分组方式数目,结果对 109+710^9 + 7109+7 取模。

样例

3 2
2 5 3
3

说明/提示

1n1001 \leq n \leq 100

x50x50x5≤x≤50 \leq x \leq 50≤x≤5

ti10ti10ti10≤ti≤10 \leq t_i \leq 10≤ti​≤10