62 lines
1.3 KiB
Python
62 lines
1.3 KiB
Python
prog1 = [(i, int(b), *r) for i, b, *r in (tuple(line.split()) for line in iter(input, 'E'))]
|
|
prog2 = [(i, int(b), *r) for i, b, *r in (tuple(line.split()) for line in iter(input, 'E'))]
|
|
|
|
|
|
def swapped(a, b):
|
|
if a is None:
|
|
return b, None
|
|
if b is None:
|
|
return a, None
|
|
|
|
ai, ap, *ar = a
|
|
bi, bp, *br = b
|
|
|
|
if bi == 'I':
|
|
if ap >= bp:
|
|
a = ai, ap + 1, *ar
|
|
return b, a
|
|
|
|
if ai != bi and ap == bp:
|
|
return None, None
|
|
|
|
if bi == 'D':
|
|
if ap > bp:
|
|
a = ai, ap - 1, *ar
|
|
return b, a
|
|
|
|
return a, b
|
|
|
|
|
|
def bsort(lst, swapper, i0, i1):
|
|
if i1 - i0 <= 1:
|
|
return
|
|
if i1 - i0 == 2:
|
|
r = swapper(lst[i0], lst[i0 + 1])
|
|
lst[i0] = r[0]
|
|
lst[i0 + 1] = r[1]
|
|
|
|
m = (i0 + i1) // 2
|
|
bsort(lst, swapper, i0, m)
|
|
bsort(lst, swapper, m, i1)
|
|
|
|
for i in range(m, i1):
|
|
for j in range(i - 1, i0 - 1, -1):
|
|
oa, ob = lst[j], lst[j + 1]
|
|
na, nb = swapper(oa, ob)
|
|
if (oa, ob) == (na, nb):
|
|
break
|
|
lst[j], lst[j + 1] = na, nb
|
|
|
|
|
|
# print(prog1)
|
|
bsort(prog1, swapped, 0, len(prog1))
|
|
prog1 = [x for x in prog1 if x is not None]
|
|
# print(prog1)
|
|
# print()
|
|
# print(prog2)
|
|
bsort(prog2, swapped, 0, len(prog2))
|
|
prog2 = [x for x in prog2 if x is not None]
|
|
# print(prog2)
|
|
|
|
print('10'[prog1 == prog2])
|