Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
Во время сессии студенты сдают 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.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.
import statistics
data = []
with open('2604.txt') as file:
N = int(file.readline())
for line in file:
parts = line.strip().split()
candidate = {
"id" : int(parts[0]),
"m_1": int(parts[1]),
"m_2": int(parts[2]),
"m_3": int(parts[3]),
"m_4": int(parts[4])}
marks = (candidate["m_1"], candidate["m_2"],
candidate["m_3"], candidate["m_4"])
candidate["twos"] = marks.count(2)
candidate["mean"] = statistics.mean(marks)
data.append(candidate)
data = sorted(data, key=lambda x: (-x["mean"], x["twos"], x["id"]))
# Первая четверть студентов
quart = N // 4
answer_1 = data[quart - 1]["id"]
print(answer_1)
for candidate in data:
if candidate["twos"] > 2:
print(candidate["id"])
break
