Олимпиадный тренинг

Задача . F2. Завершение проектов (сложная версия)


Единственное отличие между простой и сложной версиями — то, что вам необходимо завершить все проекты в легкой версии, но это не обязательно в сложной версии.

Поликарп — очень известный фрилансер. Его текущий рейтинг равен \(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\)-й проект и изменение рейтинга после завершения проекта.

Выходные данные

Выведите одно целое число — размер максимально возможного подмножества (возможно, пустого) проектов, которые Поликарп может выбрать.


Примеры
Входные данныеВыходные данные
1 3 4
4 6
10 -2
8 -1
3
2 5 20
45 -6
34 -15
10 34
1 27
40 -45
5
3 3 2
300 -300
1 299
1 123
3

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя