values, в котором встречаются только числа 1, 2 и 3, и массив locks той же длины из нулей и единиц.
Соседние элементы на позициях i и i + 1 можно поменять местами, только если левый ровно на единицу больше правого (values[i] - values[i + 1] == 1) и замок i открыт (locks[i] == 0). Такие обмены можно делать сколько угодно раз.
За одну операцию можно открыть любой замок, то есть сделать locks[i] равным 0. Верните минимальное число операций, после которого values можно отсортировать по неубыванию, или -1, если это невозможно даже со всеми открытыми замками.values=[2, 1, 3, 2], locks=[1, 0, 1, 1] → 2
Двойку и единицу на позициях 0–1 нужно поменять, поэтому замок 0 открываем. Тройку и двойку на позициях 2–3 тоже нужно поменять — открываем замок 2. Итого 2.
values=[1, 3, 2, 1], locks=[0, 0, 0, 0] → -1
Тройка стоит левее последней единицы, а напрямую тройку с единицей менять нельзя, так что отсортировать не выйдет.
values=[1, 1, 2, 3], locks=[1, 1, 1, 1] → 0
Ряд уже отсортирован, открывать ничего не нужно.
values=[2, 1, 3, 2], locks=[1, 0, 1, 1]
2
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 139 тестов на сервере, включая скрытые.