8VC Venture Cup 2016 - Elimination Round |
---|
Закончено |
В аудитории есть n студентов, которые работают над групповыми проектами. Студенты будут разделены на группы (группа может состоять и из одного студента), после чего каждый студент в группе будет работать над своей независимой частью проекта, а затем они объединят результаты в рамках этой группы. Известно, что i-й студент выполнит свою работу ровно за ai минут.
Если студенты в группе работают с разной скоростью, то это раздражает как тех, кто делает свою работу быстро и ждёт остальных, так и тех, кто делает её медленно и задерживает всю группу. Несбалансированностью группы называется разница между максимальным ai в группе и минимальным ai в группе. Обратите внимание, что несбалансированность группы из одного студента равна 0. Сколькими способами можно разбить студентов на группы так, чтобы суммарная несбалансированность всех групп не превосходила k?
Два разбиения считаются различными, если какие-то два студента были в одной группе в одном разбиении, но оказались в разных группах в другом разбиении.
В первой строке записаны два целых числа n и k (1 ≤ n ≤ 200, 0 ≤ k ≤ 1000) — количество студентов и максимальная разрешённая суммарная несбалансированность соответственно.
Во второй строке записаны n целых чисел ai (1 ≤ ai ≤ 500) — i-е число равняется количеству минут, которое тратит на выполнение своей независимой части работы студент номер i.
Выведите количество способов разбить студентов на группы требуемым образом. Поскольку ответ может быть достаточно большим, то выведите остаток от деления этого числа на 109 + 7.
3 2
2 4 5
3
4 3
7 8 9 10
13
4 0
5 10 20 21
1
В первом примере возможны три разбиения:
В третьем примере суммарная несбалансированность должна быть равна 0, поэтому каждый студент должен работать индивидуально.
Название |
---|