Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

25 lines
643B

  1. grid = {}
  2. for y, line in enumerate(open(0)):
  3. for x, char in enumerate(line[:-1]):
  4. grid[complex(x, y)] = char
  5. ans1 = 0
  6. for p, v in grid.items():
  7. if all(grid[p + s] > v for s in [1, -1, 1j, -1j] if p + s in grid):
  8. ans1 += int(v) + 1
  9. print(ans1)
  10. valid = {k for k, v in grid.items() if v != '9'}
  11. pending = valid.copy()
  12. basin_sizes = []
  13. while pending:
  14. edge = {pending.pop()}
  15. seen = edge.copy()
  16. while edge:
  17. edge = {p + s for p in edge for s in [1, -1, 1j, -1j]} & valid - seen
  18. seen |= edge
  19. pending -= seen
  20. basin_sizes.append(len(seen))
  21. *_, x, y, z = sorted(basin_sizes)
  22. print(x * y * z)