Отсортируем пауков по возрасту. Будем по очереди (по возрастанию возраста) брать пауков и назначать им детей.
Пусть у очередного паука возраст ai и ограничение на число детей ci. Тогда рассмотрим пауков возраста меньше ai (поскольку пауки упорядочены, это префикс, и его можно поддерживать при помощи метода двух указателей). Назначим текущему пауку как можно больше детей из этого префикса, у которых ещё нет родителя (ci или меньше, если не хватает). Мы можем назначить нужное количество детей наименьшего возраста, тогда пауки с уже назначенными родителями будут образовывать префикс.
Таким образом, будем перебирать текущего паука i, поддерживать x — последнего паука возраста меньше ai, и y — сколько пауков уже получили родителя. Назначим i-му пауку не более ci детей, обновим y.
В конце y должно быть равно n - 1, иначе ответ «NO».