from AGC049 AGC049B
The operation to be performed is either 01 to 10 or 11 to 00
Thinking from behind
I've been doing this for a while.
Tweet:
python
def solve(N, S, T):
spos = []
tpos = []
diff = 0
for i in range(N):
if S[i] == 1:
spos.append(i)
diff += 1
if T[i] == 1:
tpos.append(i)
diff -= 1
if diff % 2 == 1:
return -1
if diff < 0:
return -1
tpos += [N] * N
spos.append(-1)
i = 0
j = 0
ret = 0
while i < len(spos) - 1:
if spos[i] < tpos[j]:
# spos_i should be deleted
next = spos[i + 1]
if next == -1:
return -1
ret += (next - spos[i])
i += 2
continue
ret += (spos[i] - tpos[j])
i += 1
j += 1
if j != len(tpos) - N:
return -1
return ret
This page is auto-translated from /nishio/AGC049B using DeepL. If you looks something interesting but the auto-translated English is not good enough to understand it, feel free to let me know at @nishio_en. I'm very happy to spread my thought to non-Japanese readers.