Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Задача о рюкзаке - 2

(Время: 2 сек. Память: 16 Мб Сложность: 56%)

Одной из классических NP-полных задач является так называемая Задача о рюкзаке. Формулируется она следующим образом.

Дано n предметов, каждый из которых характеризуется неотрицательными весом wi и стоимостью ci. Необходимо выбрать некоторый набор этих предметов так, чтобы суммарный вес этого набора не превышал W, а суммарная стоимость была максимальна.

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

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

Содержательным, по Вашему мнению, тест является тогда и только тогда, когда все веса предметов различны и не меньше Wmin, все стоимости предметов различны и не меньше Cmin, в наборе, соответствующем правильному ответу, содержится не менее Kmin элементов и, кроме того, вместе с этим набором существуют:

1. набор, дающий такую же стоимость, но содержащий больше предметов;

2. набор, дающий такую же стоимость, содержащий такое же число элементов, но лексикографически идущий позже правильного ответа.

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

После 5 часов сидения за бумагой, Вы решили написать программу, составляющую за Вас такие тесты.

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

Входной файл INPUT.TXT содержит четыре числа: n, Wmin, Kmin и Cmin (6 ≤ n ≤ 25, 1 ≤ Wmin ≤ 109, 1 ≤ Cmin ≤ 109, 1 ≤ Kmin ≤ n−1). Гарантируется, что всегда существует хотя бы одно решение.

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

В выходной файл OUTPUT.TXT в первую строку выведите числа n и W. Число W определяете Вы. Далее выведите n строк, в каждой 2 числа: wi и ci, разделенные пробелами. Полученный набор должен быть содержательным. При существовании нескольких таких наборов выведите любой.

Пример

INPUT.TXTOUTPUT.TXT
16 9 2 106 40
10 12
12 15
22 27
18 25
25 36
15 16

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!


 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 Тренировочные олимпиады
 Личные олимпиады
 Командные олимпиады
 Первая командная олимпиада
 Вторая командная олимпиада
 Третья командная олимпиада
 Четвертая командная олимпиада
 Пятая командная олимпиада
 A. Циклический сдвиг
 B. Произведение
 C. Пять делителей
 D. Игра средней оплаты
 E. Композиция
 F. Суровый садовник
 G. Задача о рюкзаке - 2
 H. Угадайка

Красноярский краевой Дворец пионеров, (c)2006 - 2023, ИНН 246305493507, E-mail: admin@acmp.ru