SMS голосування
У фіналі фабрики зірок було проведено SMS голосування для визначення переможців серед N конкурсантів. Телеглядачі відправляли SMS з номером (число від 1 до N) свого улюбленого виконавця і кількість відповідних SMS склали рейтинг кожного учасника. Всього на головний комп’ютер конкурсу надійшло M повідомлень SMS. Потрібно скласти програму, яка виведе номери трьох переможців у порядку спадання їх рейтингів та зростання номерів у випадку, якщо рейтинги рівні.
Вхідні дані
У першому рядку записано два числа N і M (3 ≤ N ≤ 100, 1 ≤ M ≤ 1000000).
У наступному рядку M чисел, кожне з яких не перевищує N.
Вихідні дані
Три числа - номери переможців записані в один рядок, через пропуск.
Ліміт часу 1 секунда
Ліміт використання пам'яті 128 MiB
Вхідні дані #1
5 10
1 2 3 4 5 2 1 2 4 2
Вихідні дані #1
2 1 4
Ответы
Ответ дал:
1
Ответ:
from collections import Counter
n, m = map(int, input().split())
votes = list(map(int, input().split()))
# підрахунок кількості голосів для кожного конкурсанта
vote_count = Counter(votes)
# сортування за зменшенням кількості голосів, а потім за збільшенням номера
winners = sorted(vote_count.items(), key=lambda x: (-x[1], x[0]))
# виведення перших 3 переможців
for i in range(3):
print(winners[i][0], end=" ")
Объяснение:
У цьому розв'язку використовується функція `Counter()` модулю `collections`, яка дозволяє зручно підрахувати кількість голосів для кожного учасника. Потім результат сортується за зменшенням кількості голосів, а в разі рівності - за збільшенням номеру конкурсанта. На кінці просто виводяться перші три переможці.
Артур998:
https://znanija.com/task/52309283 как исправить эту ошибку? 100 баллов
Вас заинтересует
1 год назад
1 год назад
1 год назад
1 год назад
3 года назад
3 года назад
8 лет назад
8 лет назад