import lib data = open(0).read().strip() part_1 = False rds = [] max_dist = 0 gtime = 2503 rds = [] for line in data.splitlines(): speed, time, rest = lib.str_to_ints(line) rds.append([speed, time, rest, 0, 0, 0]) speed *= 1000 dist = 0 ctime = 0 while ctime < gtime: t = min(time, gtime - ctime) dist += (speed * t) ctime += time ctime += rest max_dist = max(dist, max_dist) if part_1: print(max_dist // 1000) scores = [0 for _ in range(len(rds))] for _ in range(gtime): for i in range(len(rds)): speed, time, rest, dist, travel_time, rest_time = rds[i] rd = rds[i] if travel_time < time: rd[3] += speed rd[4] += 1 elif rest_time < rest: rd[5] += 1 if rd[5] == rest: rd[4] = 0 rd[5] = 0 max_i = -1 max_v = 0 for i, rd in enumerate(rds): if rd[3] > max_v: max_i = i max_v = rd[3] for i, rd in enumerate(rds): if rd[3] == max_v: scores[i] += 1 if not part_1: print(max(scores))