54 lines
1.1 KiB
Python
54 lines
1.1 KiB
Python
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))
|
|
|