Во время сессии студенты сдают 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
4 4 4 4 4
7 5 5 5 2
10 3 4 4 5
1 4 4 4 3
6 3 5 5 3
2 2 2 2 2
13 2 2 2 3
3 3 3 3 3
При таких исходных данных рейтинговый список ID имеет вид: 4 6 10 1 3 7 13 2. Ответ: 6 13.
Ответ:
Откроем текстовый документ с помощью редактора электронных таблиц. Запомним количество студентов и удалим первую строку.
В столбце F будем считать средний балл студентов. В ячейку F1 запишем формулу =СРЗНАЧ(B2:E2) и скопируем её до конца списка. В столбце G будем считать количество двоек. В ячейку G1 запишем формулу =СЧЁТЕСЛИ(B2:E2;2) и скопируем её до конца списка.
Получим следующую таблицу:
Выберем столбцы от A до G и воспользуемся настраиваемой сортировкой.
Выберем последовательно сортировку по возрастанию количества двоек, сортировку по убыванию среднего балла и по убыванию ID студентов.
Так как всего студентов 9964. то 25 % от количества студентов это 2491. Выпишем ID студента в ячейке A2491. ID студента, который занимает последнее место среди студентов с повышенной стипендией 52326. Это ответ на первый вопрос.
Так как студенты с двойками не сортируются по среднему баллу, уберем уровень сортировки по среднему баллу.
Включим фильтр по столбцу G и выберем только студентов с количеством двоек больше 2.
Получим следующую таблицу:
ID первого в рейтинговом списке студента, который имеет более двух «двоек» 635.
Ответ: 52326 635.
Приведём решение Юрия Красильникова на языке Python.
f = open('demo_2025_26.txt')
n = int(f.readline())
a = [list(map(int,s.split())) for s in f]
a.sort(key = lambda x: x[0])
sdali = [x for x in a if x[1:].count(2)==0]
nesdali = [x for x in a if x[1:].count(2)!=0]
sdali.sort(key = lambda x: sum(x[1:]),reverse=True)
nesdali.sort(key = lambda x: x[1:].count(2))
rating = sdali+nesdali
for x in rating:
if x[1:].count(2) > 2:
idg22 = x[0]
break
print(rating[n//4-1][0],idg22)

