Вопрос задан 09.06.2023 в 21:24. Предмет Информатика. Спрашивает Панченко Виолетта.

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
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Марал Шокыбаева.

Ответ:

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

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Ви можете вирішити це завдання, використовуючи мову програмування Python. Ось приклад коду, який вирішує цю задачу:

python
from 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, відповідно.

0 0

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

Последние заданные вопросы в категории Информатика

Задать вопрос