Подскажите, пожалуйста. Не проходит по 3 пункту: "Для одного заказа любой видео-ролик должен показываться не более одного раза". Ну, и еще по одному. Думаю, основная проблема все-таки в 3 пункте. Я решил попробовать не рекурсивный способ, а динамический. Суть - построить таблицу (в каждой строке добавляем рекламный ролик, а каждый столбец это плюс одна секунда), в ней расписать варианты подбора. В Вики написано, что такой способ будет работать быстрее рекурсивного при большом количестве элементов. Если в хранилище все ролики разные, то метод не будет возвращать повторы. Если будут попадаться одинаковые ролики, то они "фильтруются" через LinkedHashSet (в классе Advertisement я переопределил методы equals и hashCode).