Финал и не финал Python
Несколько команд участвуют в турнире по игре «Что? Где? Когда?». Согласно регламенту турнира, в финал проходит половина команд (с округлением вверх), набравшие больше правильных ответов, чем остальные. Помогите жюри сформировать итоговый протокол.
Формат ввода На первой строке указано натуральное число N — количество команд.
Далее следует описание результатов N команд в произвольном порядке. Данные о каждой команде записываются на двух строках: на первой — название команды, на второй — количество правильных ответов. Гарантируется, что количество правильных ответов у всех команд разное.
Формат вывода Нужно вывести на отдельных строках сначала в алфавитном порядке названия всех команд, вышедших в финал (т. е. команд из лучшей по количеству ответов половины), а затем названия всех остальных команд (также на отдельных строках в алфавитном порядке).
s = [[input(), int(input())] for i in range(int(input()))]
for i in range(len(s)):
for j in range(i, len(s)):
if s[i][1] < s[j][1]:
s[i], s[j] = s[j], s[i]
s1 = list(s)
for i in range(len(s)):
for j in range(i, len(s)):
if s1[i][0] < s1[j][0]:
s1[i], s1[j] = s1[j], s1[i]
for i in s1:
if i in s[:round(len(s) / 2)]:
print(i[0])
for i in s[round(len(s) / 2):]:
print(i[0])
Должно вывести:
Магистры Яндекс.Лицеисты Обожаемые знатоки Уважаемые знатоки
Выводит:
Яндекс.Лицеисты Магистры Уважаемые знатоки Обожаемые знатоки
В чём проблема?
Ответы (2 шт):
s=sorted(s,key=lambda i: i[1],reverse = True)
s[:int(len(s)/2)] = sorted(s[:int(len(s)/2)], key=lambda i: i[0])
s[int(len(s)/2):] = sorted(s[int(len(s)/2):], key=lambda i: i[0])
for st in s:
print (st)
Результат на ваших данных:
['Магистры', 24]
['Яндекс.Лицеисты', 23]
['Обожаемые знатоки', 20]
['Уважаемые знатоки', 22]
Привести к нужному вам формату вывода надеюсь сможете сами.
для сортировки есть встроенная функция sort(), если использовать эту функцию в решении допустимо, то можно попробовать сделать так:
n = 5 # количество команд
s = [['Уважаемые знатоки', 22],
['Обожаемые знатоки', 20],
['Магистры', 24],
['Яндекс.Лицеисты', 23],
['Google.team', 19]]
w = -(-n//2) # количество финалистов (округление в большую сторону)
s.sort(key=lambda x: -x[1])
print(*[t for t,_ in s[:w]+sorted(s[w:])], sep='\n')
результат:
Магистры
Яндекс.Лицеисты
Уважаемые знатоки
Google.team
Обожаемые знатоки