|
- import collections
- import re
-
- text = open(0).read()
- grid = {}
- match = {}
- for x, y, a, b in [[int(n) for n in re.findall(r'-?\d+', ln)] for ln in text.splitlines()]:
- match[complex(x, y)] = complex(a, b)
-
- goal = 2000000
- bop = 4000000
- seen = set()
- count = collections.Counter()
- for aa, bb in match.items():
- diff = bb - aa
- reach = int(abs(diff.real) + abs(diff.imag))
- dist = int(abs(aa.imag - goal))
- if reach > dist:
- df = reach - dist
- seen |= set(range(int(aa.real - df), int(aa.real + df)))
-
- for rot in [1j ** i for i in range(4)]:
- for dx in range(reach):
- dy = reach - dx
- edgy = aa + complex(dx, dy) * rot
- for dot in [rot, rot * 1j]:
- bip = edgy + dot
- if 0 <= bip.real <= bop and 0 <= bip.imag <= bop:
- count[bip] += 1
-
- print(len(seen))
- fin = count.most_common()[0][0]
- print(fin, int(fin.real * bop + fin.imag))
|