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