Шеренга
Петя встаёт после всех, чей рост не меньше его роста.
Как к ней подойти
Потренируйтесь хранить последовательность значений и обращаться к нужным элементам списка.
Список хранит элементы в определённом порядке. Прежде чем менять его, решите, нужны ли исходные индексы и можно ли пройти по данным один раз. При удалении элементов будьте внимательны: индексы сдвигаются.
Первый меньший рост задаёт место вставки; нумерация мест начинается с единицы.
Проверьте перед запуском
- Равный рост нужно пропускать вместе с большими значениями.
Сравните свой подход
Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.
Ваше принятое решение
Рекомендуемое решение: Линейный проход
Первый меньший рост задаёт место вставки; нумерация мест начинается с единицы.
a = list(map(int, input().split()))
x = int(input())
i = 0
while i < len(a) and a[i] >= x:
i += 1
print(i + 1)
Время: O(n). Память: O(n) с учётом списка.
Другой способ: Двоичный поиск
Невозрастающий порядок позволяет найти границу двоичным поиском; чтение списка всё равно линейное.
a = list(map(int, input().split()))
x = int(input())
lo, hi = 0, len(a)
while lo < hi:
mid = (lo + hi) // 2
if a[mid] >= x:
lo = mid + 1
else:
hi = mid
print(lo + 1)
Время: O(n) всего, O(log n) поиск. Память: O(n).