Codeforces Round 568 (Div. 2) |
---|
Закончено |
Единственное отличие этой версии от упрощённой — это ограничения.
Если вы пишете на Python, то, наверняка, при отправке вашего решения на PyPy оно будет работать значительно быстрее.
В Берляндском государственном университете началась сессия. Многие студенты уже сдают экзамены.
Совсем скоро Полиграф Полиграфович примет экзамен у группы из $$$n$$$ студентов. Студенты будут сдавать экзамен подряд один за другим в порядке от $$$1$$$-го до $$$n$$$-го. Процесс сдачи происходит следующим образом:
Студенты сдают экзамен один за другим без перерывов. Полиграф Полиграфович в один момент времени принимает экзамен у одного студента.
Длительность всего экзамена составляет $$$M$$$ минут ($$$\max t_i \le M$$$), поэтому чем ближе студент находится к концу списка, тем больше вероятность того, что он не успеет сдать экзамен.
Ваша задача состоит в том, чтобы для каждого студента $$$i$$$ определить минимальное количество студентов, которые должны уйти домой, чтобы $$$i$$$-й студент гарантированно успел полностью сдать экзамен.
Для каждого студента $$$i$$$ ответ надо искать независимо, то есть если при нахождении ответа для студента $$$i_1$$$ про какого-то студента $$$j$$$ выяснилость, что он должен уйти, то при нахождении ответа для $$$i_2$$$ ($$$i_2>i_1$$$) студент $$$j$$$ не обязательно должен уйти домой.
В первой строке входных данных содержатся два целых числа $$$n$$$ и $$$M$$$ ($$$1 \le n \le 2 \cdot 10^5$$$, $$$1 \le M \le 2 \cdot 10^7$$$) — количество студентов и длительность всего экзамена в минутах, соответственно.
Во второй строке входных данных содержится $$$n$$$ целых чисел $$$t_i$$$ ($$$1 \le t_i \le 100$$$) — длительность сдачи экзамена $$$i$$$-го студента.
Гарантируется, что все значения $$$t_i$$$ не превосходят $$$M$$$.
Выведите $$$n$$$ чисел: $$$i$$$-е число должно быть равно минимальному количеству студентов, которые должны уйти с экзамена, чтобы $$$i$$$-й студент успел ответить (полностью).
7 15 1 2 3 4 5 6 7
0 0 0 0 0 2 3
5 100 80 40 40 40 60
0 1 1 2 3
Пояснение к примеру 1.
Обратите внимание, что сумма первых пяти длительностей сдач не превосходит $$$M=15$$$ (сумма равна $$$1+2+3+4+5=15$$$). Таким образом, первые пять студентов могут сдавать экзамен даже если все студенты до них тоже сдают экзамен. Иными словами, первые пять чисел в ответе равны $$$0$$$.
Для того, чтобы $$$6$$$-й студент сдал экзамен необходимо, чтобы не менее $$$2$$$-х студентов до него отказались сдавать (например, $$$3$$$-й и $$$4$$$-й, тогда $$$6$$$-й закончит свою сдачу через $$$1+2+5+6=14$$$ минут, что не превосходит $$$M$$$).
Для того, чтобы $$$7$$$-й студент успел сдать экзамен необходимо, чтобы не менее $$$3$$$-х студентов до него отказались сдавать (например, $$$2$$$-й, $$$5$$$-й и $$$6$$$-й, тогда $$$7$$$-й закончит свою сдачу через $$$1+3+4+7=15$$$ минут, что не превосходит $$$M$$$).
Название |
---|