На киберполигоне участники решают задания. Организаторы хотят наградить участника, который решит больше всех заданий. Очки начисляются по формуле:
Сначала вводится натуральное число n — количество решённых заданий всеми участниками. Затем следуют n строк, в каждой строке записаны:
Выведите имя участника, набравшего наибольшее количество очков. Гарантируется, что такой участник только один.
В поле краткого ответа введите имя сотрудника, которое получается в результате работы программы на вашем компьютере, сохранив его в файл 6_3.txt.
В поле для развернутого ответа запишите программный код решения задачи.
6_3.txt (краткий ответ)Ivanov
# Входные данные
n = int(input())
participants_scores = {}
for _ in range(n):
time, difficulty, hint_flag_str = input().split() # Считываем время, сложность и флаг подсказки
participant_name = input() # Считываем имя участника
time = int(time)
hint_flag = int(hint_flag_str)
# Определяем базовые очки
if difficulty == 'E':
base_score = 50
elif difficulty == 'M':
base_score = 80
elif difficulty == 'H':
base_score = 120
else:
base_score = 0 # Неизвестная сложность, 0 очков
# Рассчитываем штрафы
time_penalty = time * 2
hint_penalty = 10 if hint_flag == 1 else 0
# Рассчитываем итоговое количество очков
total_score = base_score - time_penalty - hint_penalty
# Если очки отрицательные, начисляем 0
if total_score < 0:
total_score = 0
# Обновляем максимальное количество очков и имя участника
if participant_name not in participants_scores:
participants_scores[participant_name] = 0
participants_scores[participant_name] += total_score
# Находим участника с максимальным количеством очков
max_score = -1
winner_name = ""
for name, score in participants_scores.items():
if score > max_score:
max_score = score
winner_name = name
# Выводим имя победителя
print(winner_name)
Ответ: Иванов