Доброго времени суток. Бьюсь уже какую неделю над задачей, просто уснуть не дает. Все никак не могу прийти к алгоритму который валидатор сумеет проверить. Итак что конкретно происходит: Беру первоначальный список, и удаляю из него все рекламы, которые превышают общее время заказа по времени, и с нулевым hits. Отдаю в функцию полученый лист. Функция(setBestList): Проверяем есть ли у нас уже какая-нибудь определенная комбинация: Если нет: Проверяем что общее время реклам < общего времени готовки. Если да - запоминаем как лучшую комбинацию. Запоминаем ее параметры(Время прокрутки, цены, кол-во реклам в блоке) Если нет - Для каждого элемента листа вызываем setBestList, передавая в него тот же лист, но с удаленным текущим элементом. Если есть уже определенный "лучший набор": Проверяем что текущий лист лучше чем "лучший набор"(по условию, сверяем стоимость рекламы>время прокрутки>количество реклам в блоке). Если текущий лист лучше "лучшего листа" то проверяем пройдет ли по времени заказа. Если да => переопределяем "лучший набор" Запоминаем его параметры. Если нет => опять начинаем рекусивно крутить удаляя по элементу и вызывая эту же функцию. Полученый результат сортирую выдачу по условию. На домашней машине все работает мгновенно на ростер из 10+ реклам с нарандомлеными параметрами. Я не знаю сколько они там кидают в джавараше нагруз, но я официально сдаюсь. Сижу над этой задачей уже месяц. Я уже не знаю куда алгоритм оптимизировать.