Космическая связь В этой задаче от вас потребуется написать программу для составления расписания сеансов связи со спутником. Каждый сеанс заключается в обмене короткими сообщениями, поэтому мы считаем, что он происходит мгновенно. Поскольку ресурсы оборудования ограничены, следует стремиться к минимизации количества сеансов. Вместе с тем, интервал времени между сеансами не должен превышать dd миллисекунд. Кроме того, существуют промежутки времени, в течении которых связь невозможна. При этом на границах промежутка мгновенный сеанс связи возможен. Расписание составляется на ttмиллисекунд. Первый сеанс должен обязательно состояться в момент 00, а последний — в момент tt.

Рассмотрим пример. Пусть t=100t=100, d=20d=20 и задано 3 промежутка недоступности связи: (5;25), (27;40), (75;90)(5;25),(27;40),(75;90). Тогда потребуется восемь сеансов связи, которые можно провести в моменты времени 0, 5, 25,45, 65, 75,90,1000,5,25,45,65,75,90,100. Конкретное расписание может быть другим, но в любом случае количество сеансов не может быть меньше восьми.

Ваша программа должна по имеющейся информации найти минимальное возможное количество сеансов связи.

Формат входных данных
В первой строке через пробел записаны три натуральных числа nn, dd и tt — количество интервалов недоступности связи, максимальный интервал между между сеансами и время, на которое составляется расписание. n\leq 200000n≤200000, d,t\leq 10^{9}d,t≤10
9
. Далее в nn строках заданы по два целых неотрицательных числа a_ia
i

и b_ib
i

— начало и конец каждого интервала недоступности связи. b_i-a_i\leq db
i

−a
i

≤d. Интервалы недоступности связи не пересекаются, каждый следующий интервал начинается строго после окончания предыдущего. 0\leq a_1 1

1

2

2

<… n

n

≤t.

Формат выходных данных
Вывести одно число — количество сеансов связи в графике.

Методика проверки
Программа проверяется на 25 тестах. Прохождение каждого теста оценивается в 0. Тест из условия задачи при проверке не используется.

В первых десяти тестах t\leq 1000t≤1000. В следующих 10 тестах t\leq 10^6t≤10
6
.

Sample Input:
3 20 100
5 25
27 40
75 90

Sample Output:
8

ElizavetaBro34 ElizavetaBro34    2   08.11.2021 08:20    3

Ответы
Zaika20051 Zaika20051  08.11.2021 08:30

n, d, t = map(int, input().split())

p =[list(map(int, input().split())) for i in range(n)]

 

c = 0

i = 0

r = 1

while c < t:

   r += 1

   c += d

   for j in range(i, n):

       if p[j][0] < c < p[j][1]:

           c = p[j][0]

           i = j

           break

 

print(r)

Объяснение:

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика