Блог для маленьких школьников и их родителей
ШколаЛа

Космическая связь В этой задаче от вас потребуется написать программу для составления расписания сеансов…

Автор:
Предмет: Информатика
Уровень: 10 - 11 класс

Космическая связь

В этой задаче от вас потребуется написать программу для составления расписания сеансов связи со спутником. Каждый сеанс заключается в обмене короткими сообщениями, поэтому мы считаем, что он происходит мгновенно. Поскольку ресурсы оборудования ограничены, следует стремиться к минимизации количества сеансов. Вместе с тем, интервал времени между сеансами не должен превышать 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 — количество интервалов недоступности связи, максимальный интервал между между сеансами и время, на которое составляется расписание. nleq 200000n≤200000, d,tleq 10^{9}d,t≤10

9

. Далее в nn строках заданы по два целых неотрицательных числа a_ia

i

и b_ib

i

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

i

−a

i

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

1

2

2

<…
n

n

≤t.

Формат выходных данных

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

Методика проверки

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

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

6

.

Sample Input:

3 20 100

5 25

27 40

75 90

Sample Output:

8

Ответов к вопросу: 1
  • ptak413
    24.10.2024 | 00:06

    Ответ:
    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)
    Объяснение:

Ответить на вопрос:
:p :-p 8) 8-) :lol: =( :( :-( :8 ;) ;-) :(( :o:
Нажимая на кнопку я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.