Для решения задачи по статистике участников олимпиады нам нужно обработать входные данные, считая количество участников по каждой школе. Давайте решим её шаг за шагом.
1. Понимание задачи
Мы имеем:
- Первую строку, содержащую число
N— количество участников. - Каждая из следующих
Nстрок содержит информацию о каждом участнике в формате:Фамилия Школа Результат
Нам необходимо:
- Определить, сколько участников представляет каждую школу.
- Отсортировать номера школ в порядке возрастания.
- Вывести номера школ и количество участников от них, но только для тех школ, от которых был хотя бы один участник.
2. Структура решения
Мы можем следовать этому плану:
- Прочитать количество участников
N. - Создать словарь для хранения количества участников по каждой школе.
- Обработать каждый ввод, увеличивать счетчик участников для соответствующей школы.
- Отсортировать номера школ и вывести результаты.
3. Псевдокод
Для понимания я опишу алгоритм в виде псевдокода:
1. Считываем N
2. Создаем пустой словарь participants_per_school
3. Для i от 1 до N:
a. Считываем строку participant_info
b. Разбиваем participant_info на фамилию, школу, результат
c. Получаем номер школы
d. Если номер школы есть в participants_per_school:
i. Увеличиваем счетчик на 1
e. Иначе:
i. Добавляем номер школы в словарь со значением 1
4. Сортируем список ключей словаря participants_per_school
5. Для каждого номера школы из отсортированного списка:
a. Печатаем номер школы : количество участников
4. Реализация на Python
Теперь реализуем это в коде Python:
# Считываем количество участников
N = int(input().strip())
# Создаем словарь для хранения количества участников по школам
participants_per_school = {}
# Обрабатываем каждую строку участника
for _ in range(N):
participant_info = input().strip().split()
# Разделяем информацию
surname = participant_info[0]
school_number = int(participant_info[1])
result = int(participant_info[2]) # Мы не будем использовать результат в этом решении
# Увеличиваем счетчик для соответствующей школы
if school_number in participants_per_school:
participants_per_school[school_number] += 1
else:
participants_per_school[school_number] = 1
# Сортируем номера школ
sorted_schools = sorted(participants_per_school.keys())
# Печатаем результат
for school in sorted_schools:
print(f"{school}: {participants_per_school[school]}")
5. Как работает код:
- Мы считываем количество участников и создаём пустой словарь для записи количества участников по каждой школе.
- В цикле перебираем каждую строку, используя метод
split(), для извлечения фамилии, номера школы и результата. - Считаем участников в словаре.
- В конце сортируем номера школ и выводим результаты в требуемом формате.
Теперь вы можете протестировать эту программу с различными входными данными, чтобы убедиться, что она работает правильно!