решить Python Ежеминутные автобусы
(Время: 2 сек. Память: 128 Мб Сложность: 30%)
На автобусную остановку каждую минуту подходит автобус одного из маршрутов. Диспетчерская служба собрала данные за N минут – номера маршрутов каждого автобуса.
Требуется определить максимально возможное время ожидания для пассажира, желающего уехать определенным маршрутом. Т.е. в данной последовательности номеров маршрутов нужно найти два самых удаленных числа, равных между собой, между которыми нет равных им. Например, для последовательности 2, 11, 2, 2, 25, 11, 25, 11 максимальное время ожидания равно 4 (для маршрута номер 11).
Входные данные
Входной файл INPUT.TXT содержит в первой строке число N (2 ≤ N ≤ 106). Во второй строке записаны N чисел – номера маршрутов. Все числа натуральные и не превышают 100. Каждый номер маршрута встречается не менее двух раз.
Выходные данные
В выходной файл OUTPUT.TXT выведите ответ на задачу.
Примеры
№ INPUT.TXT OUTPUT.TXT
1 8
2 11 2 2 25 11 25 11 4
2 4
23 23 41 41 1
Для начала, давайте разберемся, что требуется сделать. Нам нужно найти два самых удаленных числа, равных между собой, при условии, что между этими числами нет других чисел, равных им.
Алгоритм решения этой задачи можно разбить на несколько шагов:
1. Нам нужно получить входные данные из файла INPUT.TXT.
В первой строке файла находится число N - количество минут, за которые собраны данные. Во второй строке находятся N чисел - номера маршрутов каждого автобуса.
Для этого, давайте откроем файл INPUT.TXT, прочитаем первую и вторую строки, и сохраним значения в переменных.
2. Далее, нам нужно найти два самых удаленных числа, равных между собой, при условии, что между этими числами нет других чисел, равных им.
Для этого, давайте создадим переменную max_wait_time и установим ее равной 0 - это будет максимальное время ожидания пассажира.
Затем, давайте создадим пустой список visited_nums - это будет список чисел, которые мы уже проверили.
Теперь, давайте пройдемся по числам маршрутов в порядке их появления в списке. Для каждого числа, давайте проверим, есть ли оно уже в списке visited_nums. Если да, то нам нужно найти разницу времени между текущей позицией и предыдущей позицией этого числа в списке маршрутов. Если эта разница больше, чем текущее значение max_wait_time, то обновим max_wait_time.
После этого, добавим текущее число в список visited_nums.
3. После прохода по всем числам маршрутов, мы получим максимальное время ожидания пассажира в переменной max_wait_time.
Теперь, давайте откроем файл OUTPUT.TXT и запишем в него значение max_wait_time.
4. Задача решена! Вы можете проверить файл OUTPUT.TXT, чтобы узнать ответ на задачу.
Вот пример реализации на языке Python:
```python
# Шаг 1
with open("INPUT.TXT", "r") as input_file:
n = int(input_file.readline())
routes = list(map(int, input_file.readline().split()))
# Шаг 2
max_wait_time = 0
visited_nums = []
for i, num in enumerate(routes):
if num in visited_nums:
prev_index = visited_nums.index(num)
wait_time = i - prev_index
if wait_time > max_wait_time:
max_wait_time = wait_time
visited_nums.append(num)
# Шаг 3
with open("OUTPUT.TXT", "w") as output_file:
output_file.write(str(max_wait_time))
```
Учительский совет: Если вы хотите лучше понять, как работает этот код, попробуйте взять небольшой пример входных данных и выполнить шаги решения вручную. Это поможет вам лучше понять, как работает каждая часть кода.
Удачи в изучении программирования! Если у вас возникнут еще вопросы, не стесняйтесь задавать их.