201812-2 小明放學(python滿分)

去年考試卡在這道題上了,總是想着怎麼寫得漂亮點,所有的時間都花在這道題上了,也只拿了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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章