Контейнеры для лаборатории
У медицинской компании есть $N$ пунктов приёма биоматериалов на анализ. Все пункты расположены вдоль автомагистрали и имеют номера, соответствующие расстоянию от нулевой отметки до конкретного пункта. Известно количество пробирок, которое ежедневно принимают в каждом из пунктов.
Компания планирует открыть лабораторию в одном из имеющихся пунктов. Перевозить биоматериалы разрешается на расстояние не более $M$. Пробирки перевозят в специальных транспортировочных контейнерах вместимостью не более 30 штук. Каждый транспортировочный контейнер используется для доставки пробирок только из одного пункта приёма, при этом из каждого пункта приёма может быть доставлено не более одного контейнера с неполной загрузкой. Пункт для лаборатории выбрали таким образом, чтобы количество доставляемых туда контейнеров с пробирками было максимальным.
Даны два входных файла, файл $A$ и файл $B$. Каждый файл в первой строке содержит два числа $N$ и $M$ ($1 \leq N \leq 10\,000\,000$, $1 \leq M \leq 10\,000\,000$). В каждой из следующих $N$ строк находятся два числа: номер пункта и количество пробирок, принимаемых на этом пункте за сутки. Все числа натуральные, количество пробирок в каждом пункте не превышает 1000. Пункты перечислены в порядке их расположения вдоль автомагистрали.
Определите необходимое количество контейнеров для доставки пробирок в лабораторию для каждого файла.
Условие как в банке ФИПИ — открыть и сверить
| |||||
| |
Формат: число или слово без единиц измерения; дробную часть отделяйте запятой.
1Мягкая — с чего смотретьуровень 1 из 3
Для каждой возможной позиции лаборатории учитываются пункты с номерами от $x-M$ до $x+M$.
2Наводящая — какие числа считатьуровень 2 из 3
От одного пункта требуется $\left\lceil\dfrac{q}{30}\right\rceil$ контейнеров, где $q$ — количество пробирок. Используйте скользящее окно по отсортированным номерам пунктов.
3Прямая — фактически решениеуровень 3 из 3
Двигайте правую границу окна слева направо, удаляя пункты, для которых $p_i < p_j-M$. Для каждого правого пункта вычисляйте сумму контейнеров в окне и сохраняйте максимум.
