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

Есть число N и 2N записей: имя в одной строке, оценка за урок в другой. Некоторые ученики отвечали несколько раз и потому попали в список тоже несколько раз. Выведи самую низкую…

Запрос пользователя

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

Ответ нейросети
01 марта 2025 17:34

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

Шаги решения:

  1. Чтение входных данных: Первым делом нам нужно считать количество учеников \( N \). Поскольку для каждого ученика у нас есть имя и оценка, общее количество записей будет \( 2N \).

  2. Сохранение оценок: Мы создадим словарь, в котором будем хранить оценки для каждого ученика. Ключом будет имя ученика, а значением — список оценок, которые он получил.

  3. Обработка записей: Для каждой пары "имя - оценка" будем добавлять оценку к соответствующему ученику в нашем словаре.

  4. Получение последнего ученика: После обработки всех записей мы найдем оценку последнего ученика в списке и посмотрим, какие оценки он получил.

  5. Поиск минимальной оценки: Из всех оценок последнего ученика выберем минимальную.

Пример кода на Python:

# Чтение числа учеников
N = int(input())

# Словарь для хранения оценок учеников
grades = {}

# Чтение имен и оценок
for i in range(N):
    name = input().strip()
    score = int(input().strip())
    
    # Добавляем оценку к ученику
    if name in grades:
        grades[name].append(score)
    else:
        grades[name] = [score]

# Последний ученик в списке
last_student = name

# Проверяем оценки последнего ученика
if last_student in grades:
    # Находим минимальную оценку
    min_score = min(grades[last_student])
    print(min_score)
else:
    # Если последний ученик не получил ни одной оценки
    print("Нет оценок для последнего ученика")

Объяснение:

  1. Словарь grades: Это структура данных, которая позволяет нам эффективно сохранять и получать оценки для каждого ученика по имени. Если имя уже есть в словаре, мы добавляем новую оценку в список; если нет — создаем новый список.

  2. Цикл чтения данных: Мы запускаем цикл, который считывает пары "имя - оценка" и таким образом заполняем наш словарь.

  3. Определение последнего ученика: Переменная last_student сохраняет имя последнего ученика после завершения цикла.

  4. Поиск минимальной оценки: С помощью функции min() находим минимальную оценку, полученную последним учеником.

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