Прием на работу
Вам необходимо нанять работников для строительного проекта. Заявление о приёме на работу подали кандидатов, пронумерованных от до включительно. Каждый кандидат с номером требует, чтобы в случае приёма его на работу ему платили не менее чем долларов. Также для каждого кандидата с номером известен его уровень квалификации . Положение о строительной деятельности требует, чтобы вы платили работникам пропорционально их уровню квалификации относительно друг друга. Например, если вы нанимаете двух работников и таких что , то вы обязаны платить работнику ровно в три раза больше, чем вы платите работнику . Вам разрешается платить работникам нецелое число денег. Более того, разрешается даже платить количество денег, которое не может быть записано с помощью конечного числа десятичных цифр, такое как треть или шестую долю доллара.
В вашем распоряжении есть долларов, и вы хотите нанять как можно больше рабочих. Вы решаете кого нанимать и сколько им платить, но вы должны удовлетворить как требованиям работников о минимальном жаловании, так и требованиям положения о строительной деятельности. Естественно, что вам требуется уложиться в бюджет, равный долларам.
Для данного строительного проекта уровень квалификации работников не имеет значения. Вы заинтересованы только в том, чтобы нанять как можно больше работников независимо от их уровня квалификации. Однако, если есть несколько способов достичь цели, то вы хотите выбрать такой, чтобы общая сумма денег, которую вы заплатите работникам, была как можно меньше. Если и этого можно достичь несколькими способами, то нет никакого различия между этими способами, и вас удовлетворит любой из них.
Напишите программу, которая по заданным требованиям к жалованию и уровням квалификации кандидатов, а также количеству денег, которое у вас есть, определяет, каких кандидатов вам требуется нанять. Вы должны нанять как можно больше из них и при этом потратить как можно меньше денег, соблюдая требования положения о строительной деятельности, описанные выше.
Входные данные
Первая строка содержит два целых числа и , разделённые пробелом. Следующие строк описывают кандидатов, по одному кандидату на каждую строку. -я строка из них описывает кандидата с номером и содержит два целых числа и , разделённых пробелом.
Максимальное значение не может быть представлено 32-битным типом данных. Вам необходимо использовать 64-битный тип данных, такой как long long в C/C++ или int64 в Pascal, чтобы значение можно было сохранить в одной переменной. Дополнительные подробности представлены на страницах с технической информацией.
Выходные данные
Первая строка должна содержать одно целое число – количество работников, которых вы принимаете на работу. Следующие строк должны содержать список номеров кандидатов в произвольном порядке, которых вы выбрали для найма на работу (различные целые числа от до ), по одному в каждой строке.