n: current и wanted, а также целое число far_cost. Нужно превратить current в wanted, применяя к current операции любое число раз:
- выбрать два любых разных индекса i и j и инвертировать оба символа current[i] и current[j] — это стоит far_cost;
- выбрать индекс i < n - 1 и инвертировать два соседних символа current[i] и current[i + 1] — это стоит 1.
Инвертировать символ — значит заменить 0 на 1 или 1 на 0.
Верните минимальную суммарную стоимость, за которую current станет равной wanted, или -1, если это невозможно.current='0110', wanted='1001', far_cost=3 → 2
Отличаются все четыре позиции. Две соседние смены — позиции 0 и 1, затем 2 и 3 — стоят 1 + 1 = 2.
current='100001', wanted='000000', far_cost=2 → 2
Отличаются позиции 0 и 5. Цепочка соседних смен от 0 до 5 стоила бы 5, а одна дальняя смена — всего 2.
current='111', wanted='110', far_cost=1 → -1
Отличается одна позиция, а каждая операция меняет ровно два бита — исправить нечётное число отличий невозможно.
len(current) == len(wanted) == n0 и 1current='0110', wanted='1001', far_cost=3
2
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 116 тестов на сервере, включая скрытые.