05_printqueue.py 775 B

123456789101112131415161718192021222324
  1. #!/usr/bin/env python3
  2. import sys
  3. from functools import cmp_to_key
  4. def parse_rules(f):
  5. rules = {}
  6. for line in f:
  7. if line == '\n':
  8. break
  9. left, right = map(int, line.split('|'))
  10. rules.setdefault(right, set()).add(left)
  11. rules.setdefault(left, set())
  12. return rules
  13. def order(update, rules):
  14. def compare(a, b):
  15. return -1 if a in rules[b] else b in rules[a]
  16. return tuple(sorted(update, key=cmp_to_key(compare)))
  17. rules = parse_rules(sys.stdin)
  18. updates = [tuple(map(int, line.split(','))) for line in sys.stdin]
  19. ordered = [order(update, rules) for update in updates]
  20. print(sum(u[len(u) // 2] for u, o in zip(updates, ordered) if u == o))
  21. print(sum(o[len(o) // 2] for u, o in zip(updates, ordered) if u != o))