13_signal.py 685 B

12345678910111213141516171819202122232425
  1. #!/usr/bin/env python3
  2. import sys
  3. from functools import cmp_to_key
  4. def compare(l, r):
  5. if isinstance(l, int) and isinstance(r, int):
  6. return (l > r) - (l < r)
  7. if not isinstance(l, list): l = [l]
  8. elif not isinstance(r, list): r = [r]
  9. for a, b in zip(l, r):
  10. c = compare(a, b)
  11. if c != 0:
  12. return c
  13. return compare(len(l), len(r))
  14. packets = [eval(line) for line in sys.stdin if line != '\n']
  15. pairs = zip(packets[::2], packets[1::2])
  16. print(sum(i + 1 for i, (a, b) in enumerate(pairs) if compare(a, b) == -1))
  17. packets.extend(([[2]], [[6]], 0))
  18. packets.sort(key=cmp_to_key(compare))
  19. print(packets.index([[2]]) * packets.index([[6]]))