Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 20 октября 2025 16:34

Есть число N и 2N записей: имя в одной строке, оценка за урок в другой. Некоторые ученики отвечали несколько раз и потому попали в список тоже несколько раз. Выведи самую низкую оценку из тех, которые получил последний ученик в списке. Ввод Вывод 4 Петров Пётр 4 Сонина Софья 4 Александрова Александра 5 Сонина Софья 3 3

Ответ нейросети

20 октября 2025 16:34

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

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

Например из примера:

  • Последний ученик: "Сонина Софья"
  • Её записи: 4, 3
  • Минимальная оценка: 3

Пошаговый алгоритм

  1. Прочитать N.
  2. Прочитать N пар (name_i, grade_i) и сохранить их в список.
  3. last_name = name_N (имя последнего ученика).
  4. Найти минимальную grade среди всех пар, где name == last_name.
  5. Вывести найденное минимальное значение.

Сложность

  • Время: O(N)
  • Память: O(N) (храним все пары)

Примечание по реализации

  • Поскольку имя последнего ученика неизвестно до конца ввода, две-pass подход не обходится без хранения записей. В данной реализации мы сохраняем пары, затем вычисляем минимум для нужного имени.

Пример кода (Python)

import sys

def main():
    data = sys.stdin.read().splitlines()
    if not data:
        return

    N = int(data[0].strip())
    pairs = []
    idx = 1
    for _ in range(N):
        name = data[idx].rstrip('\n')
        idx += 1
        grade = int(data[idx].strip())
        idx += 1
        pairs.append((name, grade))

    last_name = pairs[-1][0]
    min_grade = None
    for name, g in pairs:
        if name == last_name:
            if (min_grade is None) or (g < min_grade):
                min_grade = g

    print(min_grade)

if __name__ == "__main__":
    main()

Пояснение к примеру

  • Ввод: N=4, пары: (Петров Пётр, 4), (Сонина Софья, 4), (Александрова Александра, 5), (Сонина Софья, 3)
  • Последний ученик: Сонина Софья
  • Её оценки: 4, 3
  • Вывод: 3

Если хочешь, могу адаптировать решение под другой язык программирования или добавить обработку ошибок ввода.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Есть число N и 2N записей: имя в одной строке, оценка за урок в другой. Некоторые ученики отвечали несколько раз и потому попали в список тоже несколько раз. Выведи самую низкую оценку из тех, которые получил последний ученик в списке. Ввод Вывод 4 Петров Пётр 4 Сонина Софья 4 Александрова Александра 5 Сонина Софья 3 3
Краткое пояснение задачи - Вводится N и далее N пар: имя ученика (одной строкой) и его оценка за урок (следующая строка с числом). - Последний ученик в списке — это имя из последней пары. - Нужно взять все записи с этим именем и вывести минимальную оценку среди них. Например из примера: - Последний ученик: "Сонина Софья" - Её записи: 4, 3 - Минимальная оценка: 3 Пошаговый алгоритм 1) Прочитать N. 2) Прочитать N пар (name_i, grade_i) и сохранить их в список. 3) last_name = name_N (имя последнего ученика). 4) Найти минимальную grade среди всех пар, где name == last_name. 5) Вывести найденное минимальное значение. Сложность - Время: O(N) - Память: O(N) (храним все пары) Примечание по реализации - Поскольку имя последнего ученика неизвестно до конца ввода, две-pass подход не обходится без хранения записей. В данной реализации мы сохраняем пары, затем вычисляем минимум для нужного имени. Пример кода (Python) ```python import sys def main(): data = sys.stdin.read().splitlines() if not data: return N = int(data[0].strip()) pairs = [] idx = 1 for _ in range(N): name = data[idx].rstrip('\n') idx += 1 grade = int(data[idx].strip()) idx += 1 pairs.append((name, grade)) last_name = pairs[-1][0] min_grade = None for name, g in pairs: if name == last_name: if (min_grade is None) or (g < min_grade): min_grade = g print(min_grade) if __name__ == "__main__": main() ``` Пояснение к примеру - Ввод: N=4, пары: (Петров Пётр, 4), (Сонина Софья, 4), (Александрова Александра, 5), (Сонина Софья, 3) - Последний ученик: Сонина Софья - Её оценки: 4, 3 - Вывод: 3 Если хочешь, могу адаптировать решение под другой язык программирования или добавить обработку ошибок ввода.