from lib import get_data from lib import ints, fst from collections import defaultdict data = get_data(__file__).strip() deers = [] for line in data.splitlines(): speed, time, rest = ints(line) deers.append([0, speed, time, rest, time, 0]) points = defaultdict(int) for _ in range(2503): max_dists = defaultdict(list) for i, deer in enumerate(deers): dist, speed, time, rest, time_left, rest_left = deer if time_left > 0: time_left -= 1 dist += speed elif time_left == 0: time_left = -1 rest_left = rest - 1 elif rest_left > 0: rest_left -= 1 elif rest_left == 0: time_left = time - 1 dist += speed rest_left = -1 max_dists[dist].append(i) deer[0] = dist deer[4] = time_left deer[5] = rest_left max_deers = max(max_dists.items()) for di in max_deers[1]: points[di] += 1 print(max(map(fst, deers))) print(max(points.values()))