#CSES1665. 编程公司

    ID: 441 传统题 1000ms 256MiB 尝试: 3 已通过: 0 难度: 3 上传者: 标签>动态规划组合数学计数DP取模CSES分组背包

编程公司

题目背景

翻译自 CSES-1665 题。

题目描述

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

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

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

输入格式

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

第二行包含 nn 个整数 t1,t2,,tnt_1, t_2, \ldots, t_n,表示每个程序员的技能等级。

输出格式

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

样例

3 2
2 5 3
3

数据范围

  • 1n1001 \le n \le 100
  • 0x50000 \le x \le 5000
  • 0ti1000 \le t_i \le 100