Олимпиада информатика 2024 нальчик 8 класс, на языке паскаля/ питон
Задача A. Баскетболист года
Максимальное время работы на одном тесте:
1 секунда
Максимальный объем используемой памяти:
64 мегабайта
Внимание, горячие новости из мира спорта!
Только что стало известно, что составлен список из N лучших баскетболистов прошедшего года. Попытаемся выяснить, есть ли среди них те, кто по праву может называться результативными игроками. Баскетболист будет называться результативным, если он забросил в корзину более N / 2 раз мяч.
Пока что мы не можем назвать их имена, но наш спортивный комментатор не был бы самим собой, если бы не попытался это выяснить.
Мы будем следить за развитием событий и обязательно сообщим вам, когда появится информация о результативных игроках. А пока вы можете проверить свою интуицию и определить, кто же станет настоящим героем этого года и определить, есть ли в этом списке результативный игрок, и если есть, то распечатать его фамилию.
Формат входных данных
Первая строка входного файла должна содержать число N (количество фамилий). Остальные N строк должны содержать список фамилий игроков.
Формат выходных данных
Программа должна вывести в выходной файл фамилию самого результативного игрока, если такого нет, то вывести сообщение No
Пример
Ввод
Вывод
5
Demidov
Ermolov
Karpov
Ermolov
Karpov
No
6
Karpov
Karpov
Karpov
Karpov
Ermolov
Akopov
Karpov
n = int(input())
counts = {}
for i in range(n):
name = input()
counts[name] = counts.get(name, 0) + 1
threshold = n // 2
result = "No"
for name, count in counts.items():
if count > threshold:
result = name
break
print(result)
def find_resultative_player():
import sys
# Читаем все входные данные
lines = sys.stdin.read().splitlines()
if not lines:
print("No")
return
N = int(lines[0])
if N == 0:
print("No")
return
names = lines[1:N+1]
# Алгоритм Бойера-Мура для поиска кандидата
candidate = None
count = 0
for name in names:
if count == 0:
candidate = name
count = 1
elif name == candidate:
count += 1
else:
count -= 1
# Проверяем, действительно ли кандидат появляется более N/2 раз
if candidate:
actual_count = names.count(candidate)
if actual_count > N / 2:
print(candidate)
return
print("No")
# Вызов функции
if __name__ == "__main__":
find_resultative_player()
Я не знаю, как у вас,
А на юге, в Нальчике,
Там деваха в брюках шла,
Парень - в сарафанчике.
Ошибиться who есть who
Я всегда рискую,
Визуально женский пол,
Если нету _уя!