Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 26. Информатика. ЕГЭ. ЕГКР. 19.04.2025
- Просмотры: 1618
- Изменено: 8 мая 2025
В банке дистанционной проверяющей системы имеется более \(100~000\) заданий. Все задачи пронумерованы начиная с единицы. Эти задания в течение учебного периода решают участники различных курсов. Каждому студенту при регистрации присваивается уникальный идентификатор — натуральное число, не превышающее \(1~000~000.\) Студент может сдать несколько различных правильных решений одной задачи, при этом в зачёт идёт только одно из них.
Преподаватель сделал выгрузку результатов за некоторый период времени и выбрал студента, который решил наибольшее количество задач из банка через одну (одну решил, следующую нет и т.д.).
Определите идентификационный номер студента, который решил наибольшее количество задач через одну, и количество решённых им задач. Если несколько студентов решили одинаковое максимальное количество задач, то укажите студента с наименьшим идентификационным номером.
Входные данные
В первой строке входного файла находится число \(N\) — количество зачтённых решений (натуральное число, не превышающее \(60~000)\) за некоторый период времени. Каждая из следующих \(N\) строк содержит два натуральных числа, не превышающих \(1~000~000:\) идентификатор студента и номер правильно решённой задачи.
Выходные данные
Два целых неотрицательных числа: наименьший идентификационный номер студента и наибольшее количество успешно решённых задач через одну.
Типовой пример организации входных данных
\(9\)
\(40 \,\, 3\)
\(60 \,\, 33\)
\(60 \,\, 33\)
\(50 \,\, 124\)
\(50 \,\, 126\)
\(50 \,\, 128\)
\(40 \,\, 4\)
\(50 \,\, 72\)
\(50 \,\, 126\)
Для приведённого примера студент с идентификационным номером \(50\) решил наибольшее количество задач через одну \((3\) задачи). Ответом является пара чисел: \(50 \, 3.\)
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Решение:
Python
fd = open('26.txt')
N = int(fd.readline())
students = {}
for _ in range(N):
id, problem = map(int, fd.readline().split())
if students.get(id):
students[id].add(problem)
else:
students[id] = {problem}
stud_prob = []
for id in students.keys():
pr = sorted(list(students[id]))
m = 1
p = 0
while p < len(pr) - 1:
p1 = p + 1
while p1 < len(pr) and pr[p1] - pr[p1-1] == 2:
p1 += 1
m = max(m, p1 - p)
p = p1
stud_prob.append((m, -id))
stud_prob.sort(reverse=True)
print(-stud_prob[0][1], stud_prob[0][0])
Ответ: \(10135 \,\, 42\)
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


