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

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years