AndreyNill
@AndreyNill
Новичок в сфере программирования

Как создать код, который считает результаты олимпиады?

Результаты олимпиады
Во время проведения олимпиады каждый из участников получил свой идентификационный номер — натуральное число. Необходимо отсортировать список участников олимпиады по количеству набранных ими баллов от больших баллов к меньшим, а при равенстве баллов — по возрастанию идентификационных номеров. Встроенные алгоритмы сортировки не использовать.

Входные данные

На первой строке дано число N(1≤N≤1000) — количество участников. На каждой следующей строке даны идентификационный номер и набранное число баллов соответствующего участника. Все числа во входном файле не превышают 105.

Выходные данные

В выходной файл выведите исходный список в порядке убывания баллов. Если у некоторых участников одинаковые баллы, то их между собой нужно выводить в порядке возрастания идентификационных номеров.
  • Вопрос задан
  • 2014 просмотров
Пригласить эксперта
Ответы на вопрос 2
LazyTalent
@LazyTalent
Data Engineer, Freelancer
Комментировать
@m1kz
N = int(input()) #кол-во участников
list = [] #пустой список

#Добавляем id и баллы в списки
for i in range(N):
    id = int(input())
    ball = int(input())
    list.append([id,ball]) #Добавление в список значений в еще 1 списке

print(list) #Для наглядности как выглядит список,
# содержащий список каждого участника (id и баллы)

#сортировка методом пузырька, можно и любые другие
flag = True
while flag: #делаем бесконечный цикл, пока все не отсортируется
    flag = False #если все сортировано, цикл прекращается
    for i in range(len(list)-1):
        # Проверяем соседние места и меняем их
        if list[i][1] > list[i+1][1]:
            list[i], list[i+1] = list[i+1], list[i]
            #можно писать по-другому, если более понятнее:
            # a = list[i]
            # list[i] = list[i+1]
            # list[i+1] = a
            flag = True

        elif list[i][1] == list[i+1][1]:  #Если совпадают баллы сравниваем id
            if list[i][0] > list[i+1][0]:
                list[i], list[i + 1] = list[i + 1], list[i]

print(list)

#если нужны только баллы то делаем след:
balls = []
for ball in list:
    balls.append(ball[1])

print(balls)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы