forecast расписан по дням: forecast[i] > 0 значит, что в день i дождь наполнит пруд с этим номером, а forecast[i] == 0 — что день сухой и в него можно осушить любой один пруд. Если дождь пойдёт над уже полным прудом, тот выйдет из берегов.
Составьте план plan той же длины: в дождливые дни plan[i] = -1, в сухие — номер пруда, который осушают. Чтобы ответ был однозначным, план строится так. Идите по дням по порядку. Когда дождь снова приходит к пруду, наполненному в день p, отдайте этому пруду самый ранний ещё не занятый сухой день после p; если такого дня нет, перелива не избежать — верните пустой массив. Сухие дни, которые так и не понадобились, отдайте пруду 1 (осушить пустой пруд можно, ничего не изменится).
Постарайтесь обойтись без квадратичного перебора сухих дней.forecast=[3, 0, 5, 0, 3, 5] → [-1, 3, -1, 5, -1, -1]
Дождь над прудом 3 повторяется в день 4 — осушаем его в первый свободный сухой день после дня 0, это день 1. Для пруда 5 (дожди в дни 2 и 5) — день 3. Ответ [-1, 3, -1, 5, -1, -1].
forecast=[2, 0, 0, 7] → [-1, 1, 1, -1]
Повторных дождей нет, сухие дни не нужны — по правилу в них осушаем пруд 1.
forecast=[4, 6, 0, 4, 6] → []
Единственный сухой день уходит пруду 4, и пруд 6 в день 4 переполняется. Ответ — пустой массив.
forecast=[3, 0, 5, 0, 3, 5]
[-1, 3, -1, 5, -1, -1]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 245 тестов на сервере, включая скрытые.