Мини-урок · перед практикой

Соседи одного знака

Проверяем соседние пары слева направо и останавливаемся на первой подходящей.

Как к ней подойти

Потренируйтесь хранить последовательность значений и обращаться к нужным элементам списка.

Коротко о теме

Список хранит элементы в определённом порядке. Прежде чем менять его, решите, нужны ли исходные индексы и можно ли пройти по данным один раз. При удалении элементов будьте внимательны: индексы сдвигаются.

Ключевая идея · Сравнение произведения

Произведение строго положительно тогда и только тогда, когда оба числа ненулевые и имеют одинаковый знак.

Проверьте перед запуском

  • Ноль не является ни положительным, ни отрицательным.
  • После первой пары нужен break.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Сравнение произведения

Произведение строго положительно тогда и только тогда, когда оба числа ненулевые и имеют одинаковый знак.

a = list(map(int, input().split()))
for i in range(len(a) - 1):
    if a[i] * a[i + 1] > 0:
        print(a[i], a[i + 1])
        break

Время: O(n). Память: O(n), включая входные данные.

Другой способ: Поток соседних значений

Храним предыдущий элемент и сравниваем знаки без умножения. split всё равно хранит слова входной строки.

values = map(int, input().split())
previous = next(values, None)
for current in values:
    if (previous > 0 and current > 0) or (previous < 0 and current < 0):
        print(previous, current)
        break
    previous = current

Время: O(n). Память: O(n) для разбитой входной строки; O(1) числовых переменных.