Задача Задача №3467758
А
А
Ниже подробное решение на Python с пошаговым объяснением.
Задача: дан N и 2N строк, чередующиеся: имя, затем оценка. Последний ученик — это имя из последней пары. Нужно вывести минимальную оценку, которую получал этот ученик во всём списке.
Пояснение по шагам:
- Считать вход: сначала N, далее 2N строк (имя, оценка, имя, оценка, ...).
- Построить список пар: (имя, оценка) для каждой пары.
- ОпределитьLast_Name — имя из последней пары.
- Пройтись по всем парам и выбрать все оценки последнего ученика.
- Найти минимум среди этих оценок и вывести его.
- Сложность: O(N) по количеству записей (один проход для сборки пар и один проход для вычисления минимума).
Пример кода:
import sys
def main():
lines = sys.stdin.read().splitlines()
if not lines:
return
N = int(lines[0].strip())
# Собираем пары (имя, оценка)
pairs = []
for i in range(N):
name_line_index = 2 * i + 1
grade_line_index = 2 * i + 2
if grade_line_index >= len(lines):
break # некорректный ввод, но обработаем без падения
name = lines[name_line_index].rstrip('\n')
grade = int(lines[grade_line_index].strip())
pairs.append((name, grade))
if not pairs:
print(0)
return
last_name = pairs[-1][0]
# Минимальная оценка последнего ученика по всем его записям
min_grade = None
for name, grade in pairs:
if name == last_name:
if min_grade is None or grade < min_grade:
min_grade = grade
# Если по каким-то причинам не нашли повторяющегося последнего ученика
# (что маловероятно, но на всякий случай)
if min_grade is None:
min_grade = 0
print(min_grade)
if __name__ == "__main__":
main()
Ключевые моменты:
- last_name берём из последней пары: имя последнего ученика в списке.
- Затем сравниваем это имя со всеми записями и собираем минимальную оценку.
- Выводим минимальное значение.