eolymp
bolt
Try our new interface for solving problems
Məsələlər

NP задача о рюкзаке

NP задача о рюкзаке

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

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

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

Первая строка содержит натуральные числа n (1n20) и w (1w109). Далее идут n строк по два числа: вес i-го предмета wi и его полезность pi (1wi, pi109).

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

В первой строке выведите количество выбранных предметов и их суммарную полезность. Во второй строке выведите их номера в возрастающем порядке (предметы нумеруются с единицы в порядке, в котором они заданы на входе).

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

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 128 MiB
Giriş verilənləri #1
2 10
10 100
9 80
Çıxış verilənləri #1
1 100
1