>>> import bisect >>> >>> def bsearch(lst, x): ... return lst[bisect.bisect(lst, x) - 1] == x ... >>> bsearch([1, 2, 3], 1) True >>> bsearch([1, 2, 3], 2) True >>> bsearch([1, 2, 3], 3) True >>> bsearch([1, 2, 3], 0) False >>> bsearch([1, 2, 3], 4) False >>>
У препода в списке может быть 15000 чисел, а у студента - 1000000. Если у студента весь список состоит из одного числа, то нет смысла искать его в преподском после первого совпадения или несовпадения. Поэтому нужно дополнительное множество (нагруженное (словарь по-питоновски)), которое будет хранить проверенные числа. А чтобы память не росла, числа из студенческого списка нужно извлекать.
вот, что не так…?
