Во время сессии студенты сдают \(4\) экзамена, за каждый из которых можно получить от \(2\) до \(5\) баллов. Студенты, получившие хотя бы одну «двойку», считаются не сдавшими сессию. Результаты сессии публикуются в виде рейтингового списка, в котором сначала указаны идентификационные номера студентов (ID), сдавших сессию, в порядке убывания среднего балла за сессию, а в случае равенства средних баллов – в порядке возрастания ID. Затем располагаются ID студентов, не сдавших сессию: сначала – получивших одну «двойку», затем – две «двойки», потом ID студентов с тремя «двойками» и, наконец, ID студентов, получивших по \(2\) балла за каждый из экзаменов. Если студенты имеют одинаковое количество «двоек», то их ID в рейтинге располагаются в порядке возрастания.
Повышенную стипендию получают студенты, занявшие в рейтинговом списке первые \(25 \%\) мест, при условии отсутствия у них «двоек». Гарантируется, что без «двоек» сессию сдали не менее \(25 \%\) студентов.
Найдите ID студента, который занимает последнее место среди студентов с повышенной стипендией, а также ID первого в рейтинговом списке студента, который имеет более двух «двоек».
В ответе запишите два целых положительных числа: сначала ID студента, который занимает последнее место среди студентов с повышенной стипендией, затем ID первого в рейтинговом списке студента, который имеет более двух «двоек».
Входные данные
В первой строке входного файла находится число \(N\), обозначающее количество студентов (целое положительное число, не превышающее \(10~000\)). Каждая из следующих \(N\) строк содержит \(5\) чисел через пробел: ID студента (целое положительное число, не превышающее \(100~000\)) и четыре оценки, полученные им за сессию. Гарантируется, что общее число студентов \(N\) кратно \(4\) и хотя бы один студент имеет более двух «двоек». Во входном файле все ID различны.
Выходные данные
Два натуральных числа: искомые ID студентов в порядке, указанном в условии задачи. Типовой пример организации данных во входном файле
\(8\)Решение:
Python
base = ''
fd = open(base + 'demo_2025_26.txt')
N = int(fd.readline())
stud = []
for line in fd:
arr = [int(x) for x in line.split()]
st = {'ID': arr[0],
'sr_ball': -sum(arr[1:]) if arr.count(2) == 0 else 0,
'neud': arr.count(2)}
stud.append(st)
stud.sort(key = lambda x: (x['neud'], x['sr_ball'], x['ID']))
for i in range(N):
if stud[i]['neud']< 3:
continue
id_neud = stud[i]['ID']
break
print(stud[N // 4 - 1]['ID'], id_neud)
Ответ: \(52326 \,\, 635\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене