Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
В банке дистанционной проверяющей системы имеется более 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.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
with open('2611.txt') as file:
N = int(file.readline())
students = []
for i in file:
students.append(list(map(int, i.split())))
students.sort()
cnt = 1
ans = []
for i in range(N - 1):
student1, student2 = students[i], students[i + 1]
if student1[0] == student2[0]:
if student1[1] == student2[1]:
continue
if abs(student2[1] - student1[1]) == 2:
cnt += 1
else:
cnt = 1
else:
cnt = 1
ans.append([cnt, student1[0]])
ans.sort(key=lambda x: (x[0], -x[1]))
print(ans[-1])
