Python. Задача 8-39

Гоночная трасса состоит из двух основных дорог и нескольких переездов, позволяющих перейти с одной дороги на другую.

Задача Гоночная трасса

На всех участках, включая переезды, движение разрешено только в одну сторону, поэтому переезд возможен только с дороги A на дорогу B.

Гонщик стартует в точке A0 и должен финишировать в точке BN. Он знает, за какое время сможет пройти каждый участок пути по каждой дороге, то есть время прохождения участков A0A1, A1A2, …, AN-1-AN, B0B1, B1B2, …, BN-1BN. Время прохождения всех переездов A0B0, A1B1, …, ANBN одинаково и известно гонщику. Необходимо определить, за какое минимальное время гонщик сможет пройти трассу.

Входные данные. Дан входной файл, в первой строке которого задаётся количество участков трассы N и целое число t — время (в секундах) прохождения каждого из переездов A0B0, A1B1, …, ANBN. В каждой из последующих N строк записано два целых числа ai и bi, задающих время (в секундах) прохождения очередного участка на каждой из дорог. В первой из этих строк указывается время прохождения участков A0A1 и B0B1, во второй — A1A2 и B1B2 и т. д

Пример входных данных:

3 20
320 150
200 440
300 210

Пример выходных данных для приведённого выше примера входных данных: 750

Ответ
525
Решение
f = open('c:\\work\\test-8-39-1.txt')
# Считывем из первой строки количество участков и время переезда
N, t = map(int, f.readline().split())
# Минимальное время в текущей точке B
tmin = t
# Время пути в текущей точке A
ta = 0
# Вычисляем минимальное время в каждой точке B
for i in range(N):
    a, b = map(int, f.readline().split())
    ta += a
    if ta + t < tmin + b:
        # Минимальное время, если переезд в текущей точке
        tmin = ta + t
    else:
        # Минимальное время, если двигаться по B
        tmin = tmin + b
f.close()
print(tmin)