Задача Задача №3474130
А
А
Краткое пояснение задачи
- Вводится N и далее N пар: имя ученика (одной строкой) и его оценка за урок (следующая строка с числом).
- Последний ученик в списке — это имя из последней пары.
- Нужно взять все записи с этим именем и вывести минимальную оценку среди них.
Например из примера:
- Последний ученик: "Сонина Софья"
- Её записи: 4, 3
- Минимальная оценка: 3
Пошаговый алгоритм
- Прочитать N.
- Прочитать N пар (name_i, grade_i) и сохранить их в список.
- last_name = name_N (имя последнего ученика).
- Найти минимальную grade среди всех пар, где name == last_name.
- Вывести найденное минимальное значение.
Сложность
- Время: 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
Если хочешь, могу адаптировать решение под другой язык программирования или добавить обработку ошибок ввода.