Задачу решил, кода много конечно вышло, но вроде всё работает, отбирает правильно, но не проходит решение. Валидатор грузит долго и всё. Что код делает, если вкратце: 1) в отдельный список выносим видео, у которых есть ещё оплаченные показы 2) В "множество множеств" формирую все возможные вариации видео. 3) По очереди удаляю наборы: 3.1) У которых суммарное время больше чем время заказа 3.2) У которых суммарная сумма показа меньше максимальной по всем оставшимся видео после п.3.1 3.3) Из оставшихся наборов удаляем наборы, в которых число видео больше минимального из всех наборов 4) Перевод из SET в LIST и его сортировка 5) revalidate() и вывод на экран Тестировал на тех примерах что давали в задаче и
add(new Advertisement(someContent, "1", 500, 10, 5 * 60));
add(new Advertisement(someContent, "2", 700, 10, 7 * 60));
add(new Advertisement(someContent, "3", 500, 10, 5 * 60));
add(new Advertisement(someContent, "4", 1500, 10, 15 * 60));
add(new Advertisement(someContent, "5", 700, 10, 7 * 60));
add(new Advertisement(someContent, "6", 100, 10, 1 * 60));