Решение задачи Туризм с Яндекс Контест

Без пояснения   Просмотров: 3155


Александр недавно увлекся горным туризмом. Ему уже надоело покорять отдельные горные пики, и он собирается покорить самую настоящую горную цепь!

Напомним, что Александр живет в плоском мире. Горная цепь состоит из отрезков, соединяющих точки на плоскости, каждая из которых находится строго правее предыдущей (x-координата следующей точки больше, чем у предыдущей). Трассой на горной цепи называется её часть между двумя фиксированными концами отрезков.

Участок, на котором при движении по трассе координата y (высота) всегда возрастает, называется подъемом, величиной подъема называется разность высот между начальной и конечной точками участка.

Туристическая компания предлагает на выбор несколько трасс на одной горной цепи. Александр из-за финансовых трудностей может выбрать для поездки только одну из этих трасс. Вы решили помочь ему с выбором. Александру важно для каждой трассы определить суммарную высоту подъемов на ней. Обратите внимание, что трасса может идти как слева-направо, так и справа-налево.

Код

n = int(input())
a = [0, 0]
b = [0, 0]
x_prev, y_prev = -1, -1
for i in range(n):
    x, y = map(int, input().split())
    if x_prev == -1:
        x_prev = x
        y_prev = y
    elif y > y_prev:
        a.append(a[-1] + y - y_prev)
        b.append(b[-1])
        x_prev = x
        y_prev = y

    else:
        a.append(a[-1])
        b.append(b[-1] + y_prev - y)
        x_prev = x
        y_prev = y

m = int(input())
for i in range(m):
    x, y = map(int, input().split())
    if x < y:
        print(a[y] - a[x])
    else:
        print(b[x] - b[y])

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет