Заранее прошу прощения за избыток коментариев в коде. Тестировал как мог. Но пункт 3 непобедим. Вот просто неподедим. Сперва действительно неправильно реализовал алгоритм рюкзака. (Жадный с сортировкой). Переписал заново. На тестовых значениях алгоритм отработал отлично. Тестовые значение: ads.add(new Ad("1", 120, 10, 4)); - в отборе ads.add(new Ad("2", 10, 10, 2)); ads.add(new Ad("3", 4, 2, 2)); ads.add(new Ad("4",40, 10, 10)); - в отборе ads.add(new Ad("5", 2, 2, 1)); - в отборе ads.add(new Ad("6", 1, 1, 1)); максимум по стоимости - 17, максимум по весу - 15 ads.add(new Ad("400-1600", 1600, 1, 400)); - в отборе ads.add(new Ad("300-1500", 1500, 1, 300)); - в отборе ads.add(new Ad("100-700", 700, 1, 100)); ads.add(new Ad("200-1200", 1200, 1, 200)); - в отборе ads.add(new Ad("500-1500", 1500, 1, 500)); максимум по деньгам - 4300, максимум по весу - 900 Из рекомендаций перепробовал многое: - убрал интерфейс из класа рекламы, реализовал посредством лямбды компаратор в теле метода обработки видео; - добавил перепроверки на количество проигрываний. в случае если нечего показывать - вылета не будет; - перебрал вывод (авось оно каждую букву проверяет). Вывод как в "правильном коде"; - посмотрел где в процес видео в "правильном" коде находиться проверка на пустоту и возможность попадания с хитс меньше нуля - сделал также. Поэтому прежде чем забить на капризы валидатора (а он тут реально упоротый) и просто скопировать все, что касается показа рекламы с "правильного" кода, хотел просто чтобы может кто свежим взглядом прошелся по моему коду. Может пропустил что-то глупое.... ПыСы: Администрация, неужели вам не понятно что ваши тестовые методы нужно переписать и\или сделать понятным условие, котрое проверяется в этом пункте 3? Или может наконец реализовать вывод ваших тестовых методов как на codewars?..