
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

Ответы на вопрос

Ответ:
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`, яка дозволяє зручно підрахувати кількість голосів для кожного учасника. Потім результат сортується за зменшенням кількості голосів, а в разі рівності - за збільшенням номеру конкурсанта. На кінці просто виводяться перші три переможці.



Ви можете вирішити це завдання, використовуючи мову програмування Python. Ось приклад коду, який вирішує цю задачу:
pythonfrom collections import Counter
# Зчитуємо вхідні дані
N, M = map(int, input().split())
votes = list(map(int, input().split()))
# Обчислюємо рейтинги кожного учасника
vote_count = Counter(votes)
ratings = [(participant, count) for participant, count in vote_count.items()]
# Сортуємо учасників за спаданням рейтингів та зростанням номерів
ratings.sort(key=lambda x: (-x[1], x[0]))
# Виводимо номери трьох переможців
winners = [rating[0] for rating in ratings[:3]]
print(*winners)
Ви можете ввести вхідні дані, як показано в прикладі, і отримати відповідний результат. Наприклад, при введенні:
5 10 1 2 3 4 5 2 1 2 4 2
Ви отримаєте вивід:
2 1 4
Це означає, що переможцями є учасники з номерами 2, 1 і 4, відповідно.


Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili