去年考试卡在这道题上了,总是想着怎么写得漂亮点,所有的时间都花在这道题上了,也只拿了60分?
今天早上想着放弃了要让代码漂亮的强迫症。
奉上python满分代码
def get_time(old_kt):
k = old_kt[0]
t = old_kt[1]
if k == 0 or k == RED:
return t
elif k == YELLOW:
return t + r
else:
return 0
def get_old_kt(new_kt):
k = new_kt[0]
t = new_kt[1]
if k == 0:
return k, t
elif t > curr:
return k, t - curr
else:
past = (curr - t) % (r + y + g)
if k == RED:
if past < g:
return GREEN, (g - past)
elif past < g + y:
return YELLOW, (g + y - past)
else:
return RED, (g + y + r - past)
elif k == YELLOW:
if past < r:
return RED, (r - past)
elif past < r + g:
return GREEN, (r + g - past)
else:
return YELLOW, (g + y + r - past)
else:
if past < y:
return YELLOW, (y - past)
elif past < y + r:
return RED, (y + r - past)
else:
return GREEN, (y + r + g - past)
RED = 1
YELLOW = 2
GREEN = 3
r, y, g = (int(number) for number in input().split())
n = int(input())
new_kt_list = []
for i in range(n):
line = input().split()
new_kt_list.append((int(line[0]), int(line[1])))
curr = 0
for new_kt in new_kt_list:
old_kt = get_old_kt(new_kt)
curr += get_time(old_kt)
print(curr)