09_xmas.py 751 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/env python3
  2. import sys
  3. from collections import deque
  4. def find_invalid(seq, winsize):
  5. win = seq[:winsize]
  6. valid = deque([a + b for b in win if a != b] for a in win)
  7. for i, num in enumerate(seq[winsize:]):
  8. if not any(num in v for v in valid):
  9. return num
  10. valid.popleft()
  11. valid.append([num + b for b in seq[i:i + winsize]])
  12. def weakness(seq, invalid):
  13. win = deque()
  14. total = 0
  15. for num in seq:
  16. while total > invalid:
  17. total -= win.popleft()
  18. if total == invalid:
  19. return min(win) + max(win)
  20. win.append(num)
  21. total += num
  22. seq = list(map(int, sys.stdin))
  23. invalid = find_invalid(seq, 25)
  24. print(invalid)
  25. print(weakness(seq, invalid))