09_tiles.py 635 B

12345678910111213141516171819
  1. #!/usr/bin/env python3
  2. import sys
  3. from itertools import combinations
  4. def area(xa, ya, xb, yb):
  5. return (abs(xa - xb) + 1) * (abs(ya - yb) + 1)
  6. def fits(red, xa, ya, xb, yb):
  7. xmin, xmax = (xa, xb) if xa < xb else (xb, xa)
  8. ymin, ymax = (ya, yb) if ya < yb else (yb, ya)
  9. return not any(xmin < x < xmax and ymin < y < ymax for x, y in red)
  10. def maxrect(half):
  11. a = half.pop()
  12. return max(area(*a, *b) for b in half if fits(half, *a, *b))
  13. red = [tuple(map(int, line.split(','))) for line in sys.stdin]
  14. print(max(area(*a, *b) for a, b in combinations(red, 2)))
  15. print(max(maxrect(red[:249]), maxrect(red[-2:248:-1])))