Codeforces Round 579 (Div. 3) |
---|
Закончено |
Единственное отличие между простой и сложной версиями — то, что вам необходимо завершить все проекты в легкой версии, но это не обязательно в сложной версии.
Поликарп — очень известный фрилансер. Его текущий рейтинг равен $$$r$$$.
Некоторые очень богатые заказчики попросили его завершить некоторые проекты для их компаний. Чтобы завершить $$$i$$$-й проект, Поликарпу необходимо иметь хотя бы $$$a_i$$$ единиц рейтинга; после того, как он завершит этот проект, его рейтинг изменится на $$$b_i$$$ (его рейтинг увеличится или уменьшится на $$$b_i$$$) ($$$b_i$$$ может быть положительным и отрицательным). Рейтинг Поликарпа не может падать ниже нуля, потому что люди перестанут доверять фрилансеру с таким низким рейтингом.
Поликарп может выбрать порядок, в котором он выполняет проекты. Более того, он даже может пропускать некоторые из проектов.
Чтобы получить больше опыта (и денег, конечно же), Поликарп хочет выбрать подмножество проектов, имеющее максимально возможный размер, и порядок, в котором он будет их выполнять, чтобы он имел достаточный рейтинг перед началом каждого проекта и неотрицательный рейтинг после окончания каждого проекта.
Ваша задача — посчитать максимально возможный размер такого подмножества проектов.
Первая строка входных данных содержит два целых числа $$$n$$$ и $$$r$$$ ($$$1 \le n \le 100, 1 \le r \le 30000$$$) — количество проектов и изначальный рейтинг Поликарпа, соответственно.
Следующие $$$n$$$ строк содержат проекты, один на строку. $$$i$$$-й проект представлен парой целых чисел $$$a_i$$$ и $$$b_i$$$ ($$$1 \le a_i \le 30000$$$, $$$-300 \le b_i \le 300$$$) — рейтинг, необходимый для того, чтобы завершить $$$i$$$-й проект и изменение рейтинга после завершения проекта.
Выведите одно целое число — размер максимально возможного подмножества (возможно, пустого) проектов, которые Поликарп может выбрать.
3 4 4 6 10 -2 8 -1
3
5 20 45 -6 34 -15 10 34 1 27 40 -45
5
3 2 300 -300 1 299 1 123
3
Название |
---|