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
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)