2026/27, 9КЛ-2, Python: Работа с файлами + задачи на подсчёт (часть2)

H: Максимальный балл призера и их количество

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

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

Решение должно иметь сложность \(O(n)\), где \(n\) — общее количество участников олимпиады. Решение должно использовать \(O(1)\) памяти.

Пример

ВводВывод
Иванов Сергей 9 92
Сергеев Петр 10 91
Петров Василий 11 92
Васильев Иван 9 93
92 2

I: Имя наилучшего не-победителя

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

Решение должно иметь сложность \(O(n)\), где \(n\) — общее количество участников олимпиады. Решение должно использовать \(O(1)\) памяти.

Примеры

ВводВывод
Иванов Сергей 9 93
Сергеев Петр 10 91
Петров Василий 11 92
Васильев Иван 9 93
Петров Василий
Иванов Сергей 9 92
Сергеев Петр 10 91
Петров Василий 11 92
Васильев Иван 9 93
2

J: Школы с наибольшим числом участников олимпиады

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

Фамилия и имя — текстовые строки, не содержащие пробелов. Школа — целое число от 1 до 999. Балл — целое число от 0 до 100.

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

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

Решение должно иметь сложность \(O(n + k)\), где \(n\) — общее количество участников олимпиады, \(k\) — количество школ. Решение должно использовать \(O(k)\) памяти.

Пример

ВводВывод
Иванов Сергей 14 56
Сергеев Петр 23 74
Петров Василий 3 99
Васильев Андрей 3 56
Андреев Роман 14 75
Романов Иван 27 68
3 14

K: Школы с наименьшим числом участников олимпиады

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

Решение должно иметь сложность \(O(n + k)\), где \(n\) — общее количество участников олимпиады, \(k\) — количество школ. Решение должно использовать \(O(k)\) памяти.

Пример

ВводВывод
Иванов Сергей 14 56
Сергеев Петр 23 74
Петров Василий 3 99
Васильев Андрей 3 56
Андреев Роман 14 75
Романов Иван 27 68
23 27

L: Отсортировать список участников по алфавиту

Известно, что фамилии всех участников — различны. Сохраните список всех участников и выведите его, отсортировав по фамилии в лексикографическом порядке. Используйте стандартную функцию сортировки языка.

Программа должна выводить фамилию, имя участника и его балл.

Сложность решения должна быть \(O(n)\) без учета сложности сортировки, где \(n\) — количество участников олимпиады. Решение может использовать \(O(n)\) памяти.

Пример

ВводВывод
Иванов Сергей 14 56
Сергеев Петр 23 74
Петров Василий 3 99
Васильев Андрей 3 56
Андреев Роман 14 75
Романов Иван 27 68
Андреев Роман 75
Васильев Андрей 56
Иванов Сергей 56
Петров Василий 99
Романов Иван 68
Сергеев Петр 74

M: Отсортировать список участников по баллам

Отсортируйте список участников олимпиады:

  1. По убыванию набранного балла.
  2. При равных значениях балла — по фамилии в лексикографическом порядке.
  3. При совпадающих баллах и фамилии — по имени в лексикографическом порядке.

Для сортировки используйте встроенную функцию сортировки.

Выведите список в таком же виде, как в предыдущей задаче.

Сложность решения должна быть \(O(n)\) без учета сложности сортировки, где \(n\) — количество участников олимпиады. Решение может использовать \(O(n)\) памяти.

Пример

ВводВывод
Иванов Сергей 14 75
Сергеев Петр 23 74
Сергеев Андрей 3 99
Петров Василий 3 99
Иванов Роман 14 75
Иванов Иван 27 76
Петров Василий 99
Сергеев Андрей 99
Иванов Иван 76
Иванов Роман 75
Иванов Сергей 75
Сергеев Петр 74