Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/163: Рейтинг темы: голосов - 163, средняя оценка - 4.60
 Аватар для LiJuan_Jhao
22 / 22 / 0
Регистрация: 11.11.2019
Сообщений: 108

Финал и не финал

27.11.2019, 20:54. Показов 32492. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Несколько команд участвуют в турнире по игре «Что? Где? Когда?». Согласно регламенту турнира, в финал проходит половина команд (с округлением вверх), набравшие больше правильных ответов, чем остальные. Помогите жюри сформировать итоговый протокол.

Формат ввода
На первой строке указано натуральное число N — количество команд.

Далее следует описание результатов N команд в произвольном порядке. Данные о каждой команде записываются на двух строках: на первой — название команды, на второй — количество правильных ответов. Гарантируется, что количество правильных ответов у всех команд разное.

Формат вывода
Нужно вывести на отдельных строках сначала в алфавитном порядке названия всех команд, вышедших в финал (т. е. команд из лучшей по количеству ответов половины), а затем названия всех остальных команд (также на отдельных строках в алфавитном порядке).
Пример
Ввод
4
Уважаемые знатоки
22
Обожаемые знатоки
20
Магистры
24
Яндекс.Лицеисты
23
Вывод
Магистры
Яндекс.Лицеисты
Обожаемые знатоки
Уважаемые знатоки
Мой код:
Python
1
2
3
4
5
6
7
8
9
N = int(input())
kom = []
res = []
for i in range(N):
    k = input()
    kom.append(k)
    r = int(input())
    res.append(r)
res_2 = reversed(sorted(res))
Помогите дописать, что выводить
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.11.2019, 20:54
Ответы с готовыми решениями:

Финал и не финал 1
Несколько команд участвуют в турнире по игре «Что? Где? Когда?». Согласно регламенту турнира, в финал проходит половина команд (с...

Сколько спортсменов по результатам соревнований вышли в финал?
Всем привет! Помогите, пожалуйста, написать программу для решения задачи из информатики 9 класса, Python. •На соревнованиях по бегу на...

Финал и не финал
Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или output.txt ...

4
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,309
27.11.2019, 21:40
CoMeLLa, немного не так. зачем вам два списка? вы же потом не сможете связать баллы и команды. вам лямбда функции знакомы? сортировка имеет ключ и нам нужен второй элемент кортежа. вам в список нужно собрать кортежи
Python
1
2
3
4
N = int(input())
kom_res = []
for i in range(N):
    kom_res.append((input(),int(input()))) # в список добавляем кортеж (команда,баллы)
теперь сортируем список по второму элементу кортежа. потом берем первую часть списка сортируем (по умолчанию по первым элементам кортежей) и выводим только первые элементы и то же самое повторяем со второй частью
1
 Аватар для LiJuan_Jhao
22 / 22 / 0
Регистрация: 11.11.2019
Сообщений: 108
27.11.2019, 22:01  [ТС]
лямбда ещё не знакома, вот кортежи только изучать будем...
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,309
27.11.2019, 22:39
Лучший ответ Сообщение было отмечено CoMeLLa как решение

Решение

ну кортежи от списков отличаются тем что их нельзя изменить ну вам это и не нужно. раз задача подразумевает сортировку значить вы должны знать алгоритмы сортировки. если знакомы с функциями то сортировку можно записать в функцию и только вызывать с разными аргументами
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
N = int(input())
kom_res = []
for i in range(N):
    kom_res.append((input(),int(input())))
 
m = len(kom_res) # длина списка
for i in range(m-1): # сортируем список по 2 элементу кортежа (баллам)
    for j in range(m-i-1):
        if kom_res[j][1] > kom_res[j+1][1]:
            kom_res[j], kom_res[j+1] = kom_res[j+1], kom_res[j]
            
moiety = m//2 # середина списка
the_final = kom_res[ moiety :] # берем в срез вторую лучшую половину
first = kom_res[ : moiety] # берем в срез первую половину
 
m = len(the_final) # длина лучшей половины
for i in range(m-1): # сортируем  по 1 элементу кортежа (команда) по умолчанию
    for j in range(m-i-1):
        if the_final[j] > the_final[j+1]:
            the_final[j], the_final[j+1] = the_final[j+1], the_final[j]
 
for i in the_final:
    print(i[0])
 
m = len(first) # длина первой половины
for i in range(m-1): # сортируем  по 1 элементу кортежа (команда) по умолчанию
    for j in range(m-i-1):
        if first[j] > first[j+1]:
            first[j], first[j+1] = first[j+1], first[j]
 
for i in first:
    print(i[0])
ну и то же самое на генераторах и лямбда
Python
1
2
3
4
5
6
7
kom_res = [(input(),int(input())) for _ in range(int(input()))]
moiety = len(kom_res)//2 # середина списка
kom_res.sort(key = lambda x : x[0])
the_final = kom_res[ moiety :] # берем в срез вторую лучшую половину
first = kom_res[ : moiety] # берем в срез первую половину
print(*(i[0] for i in list(sorted(the_final))),sep = '\n')
print(*(i[0] for i in list(sorted(first))), sep = '\n')
7
12 / 11 / 3
Регистрация: 04.11.2024
Сообщений: 101
21.12.2024, 20:40
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import math
 
 
list = []
for i in range(int(input())):
    a = input()
    b = int(input())
    cort = (a, b)
    list.append(cort)
list = (sorted(list, key=lambda x: x[1], reverse=True))
da = []
for j in range(math.ceil(len(list) / 2)):
    da.append(list[0][0])
    list.remove(list[0])
print(*sorted(da), sep="\n")
for k in range(len(list)):
    list = sorted(list)
    print(list[0][0])
    list.remove(list[0])
!ОСТОРОЖНО! За такое решение отчисляют!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.12.2024, 20:40
Помогаю со студенческими работами здесь

Финал ACM ICPC
(Время: 2 сек. Память: 32 Мб Сложность: 36%) Ежегодно в Санкт-Петербурге, Барнауле и некоторых городах ближнего зарубежья проходят...

Финал Лиги Чемпионов
Скоро финал Лиги Чемпионов, и я думаю,что все таки надо создать тему,посвященную этому грандиозному событию. Высказывайтесь,кто по вашему...

Финал размышлений о Space Enginers
Финал прост на самом деле. Разумеется онлайн. Изометрия, 3D потом. Что нужно? Программирование и проектирование. То-есть это...

пра фотбол (финал уефа)
сегодня решил расслабиться: после работы пошел футбол смотреть, в кафе нашей фирмы (растем-с))) уже собственной кафешкой обзавелись) -...

ЧМ по хоккею 2009, финал. Россия - Канада
В финальном поединке россияне выступают в ранге чемпионов мира. В прошлом году в решающем матче в Канаде они одолели сборную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru