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$$$-й проект и изменение рейтинга после завершения проекта.
Выведите «YES» или «NO».
3 4 4 6 10 -2 8 -1
YES
3 5 4 -5 4 -2 1 3
YES
4 4 5 2 5 -3 2 1 4 -2
YES
3 10 10 0 10 -10 30 0
NO
В первом примере возможная последовательность имеет вид: $$$1, 2, 3$$$.
Во втором примере возможная последовательность имеет вид: $$$2, 3, 1$$$.
В третьем примере возможная последовательность имеет вид: $$$3, 1, 4, 2$$$.
Название |
---|