아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Размещение симбиотов

시간 제한2초메모리 제한1024 MB

요약
각 숙주가 위험도 합이 B 이하인 심비온을 최대 4마리까지 수용할 수 있을 때, i번째 심비온 쌍이 i번째나 i-1번째 숙주 쌍만 고를 수 있다는 조건 아래 2n마리의 배정 가짓수를 센다.
난이도

보통10점 중 6점

유형
동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

Вернемся немного во времени в события первого фильма, когда корпорация <<Фонд жизни>> проводила эксперименты на людях с участием симбиотов. В итоге все закончилось довольно хорошо, но давайте представим, что было бы, если Эдди с Веномом не остановили бы запуск ракеты, и еще больше симбиотов прибыли бы на Землю.

Прилетевшие 2n2n симбиотов хотят найти себе носителей, и для этого они отобрали 2n2n самых здоровых людей. Известно, что ii-й симбиот обладает опасностью a_ia\_i, а ii-й носитель --- вместимостью ровно BB. Отобранные люди оказались настолько крепкими, что каждый из них может вместить аж до четырех симбиотов одновременно, но только если их суммарная опасность не превышает вместимости носителя.

Чтобы все было честно, был определен следующий порядок объединения с носителями:

  1. все носители разбиваются на пары, в паре номер ii находятся носители с номерами 2i−12i - 1 и 2i2i (нумерация как носителей, так и пар, с единицы);
  2. аналогичным образом на пары разбиваются все симбиоты;
  3. каждый симбиот из ii-й пары может выбрать произвольного носителя из ii-й или (i−1)(i - 1)-й пары (если, конечно, его вместимости для этого хватает).

Понятно, что симбиоты из первой пары могут выбирать себе носителей только из нее, потому что нулевой пары нет, но каждая следующая пара симбиотов уже имеет выбор между своей парой и предыдущей.

Помогите симбиотам посчитать количество способов, которыми они могут объединиться с носителями. Не обязательно, чтобы каждый носитель в итоге содержал симбиота, но обязательно, чтобы у каждого симбиота был носитель. Поскольку ответ может быть довольно большим, посчитайте его по модулю 109+710^9 + 7.

입력

В первой строке ввода через пробел даны два целых числа: nn --- количество пар симбиотов (и, соответственно, носителей), и BB --- вместимость каждого носителя (1⩽n⩽5⋅1051 \leqslant n \leqslant 5 \cdot 10^5; 1⩽B⩽1091 \leqslant B \leqslant 10^9).

Во второй строке через пробел перечислены 2n2n целых чисел a_ia\_i --- значения опасности каждого симбиота (1⩽a_i⩽1091 \leqslant a\_i \leqslant 10^9).

출력

Выведите единственное целое число --- количество способов разместить симбиотов по носителям по модулю 109+710^9 + 7. Если нет возможности назначить каждому симбиоту носителя, то число способов равно нулю.

예제2

  1. 예제 1

    입력
    2 8
    4 5 6 7
    
    예상 출력
    4
    
  2. 예제 2

    입력
    2 8
    3 4 5 6
    
    예상 출력
    20