Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3585299
А
Аноним
16 марта 2026 17:20 · публичный вопрос
А
Аноним

Дано число N, затем в N строках N имён учеников из списка класса, а под ними — N оценок этих учеников (в том же порядке). Выведи имена всех учеников, которые получили пятерки.

Ответ нейросети
16 марта 2026 17:20

Решение задачи: вывести имена учеников, которые получили пятерки

Краткое понимание задачи

  • В начале дано число N.
  • Затем идут N строк с именами учеников (одна строка — одно имя).
  • Под ними идут N оценок тех же учеников в том же порядке (одна или несколько оценок на строку; по сути — нужно взять первые N целых чисел после имен).
  • Нужно вывести те имена, у которых соответствующая оценка равна 5.

Пошаговое объяснение

  1. Прочитать N.
  2. Прочитать N имен и сохранить их в списке names.
    • Предполагаем, что каждое имя занимает отдельную строку.
  3. Прочитать N оценок, учитывая, что они могут построчно быть по одной цифре или записаны несколькими цифрами в одной строке.
    • Собираем градации в список grades, и продолжаем читать, пока не наберём N значений. Игнорируем пустые строки.
  4. Пройтись по индексу i от 0 до N-1 и вывести names[i], если grades[i] == 5.
  5. Сложность: время O(N), память O(N).

Особенности

  • Если оценки даны на одной строке через пробел, код обрабатывает это нормально.
  • Если кто-то получил не число или есть лишние данные — код ориентирован на корректный ввод по задаче.

Пример реализации на Python (чтение из stdin)

def solve(): import sys

# Шаг 1: прочитать N
line = ''
while line.strip() == '':
    line = sys.stdin.readline()
    if line == '':
        return  # нет данных
N = int(line.strip())

# Шаг 2: прочитать N имен
names = []
while len(names) < N:
    s = sys.stdin.readline()
    if s == '':
        break
    names.append(s.rstrip('\n').rstrip('\r'))

# В случае, если прочитано меньше N имен (структура input нестандартна),
# можно завершить или обработать как есть. Предположим корректный ввод.

# Шаг 3: прочитать N оценок
grades = []
while len(grades) < N:
    line = sys.stdin.readline()
    if line == '':
        break
    parts = line.strip().split()
    for p in parts:
        if p:
            grades.append(int(p))
            if len(grades) == N:
                break

# Шаг 4: вывести имена с пятёрками
out = []
for i in range(min(N, len(grades), len(names))):
    if grades[i] == 5:
        out.append(names[i])

sys.stdout.write("\n".join(out))

if name == "main": solve()

Пример теста

  • Ввод: 4 Анна Борис Виктор Галина 5 3 5 4
  • Вывод: Анна Виктор

Другой вариант ввода (оценки в одной строке): 3 Иван Петр София 5 4 5

  • Вывод: Иван София

Этим ответом вы получаете корректный список всех учеников, которые получили пятерки, в порядке их появления.