#z26 Статград октябрь 2022 года
f=open('26.txt') # открытие файла с данными
N=int(f.readline()) # начальное кол-во контейнеров
print(N) # отладочная печать
eps=5 # необходимый зазор
BB=[] # список размеров контейнеров
for _ in range(N): # чтение списка
    x=int(f.readline()) 
    BB.append(x)
BB.sort() # сортировка по возрастанию (отбор будем проводить с "хвоста")
rez=[] # для хранения результатов (можно без списка)
while BB : # пока стек не пуст
    p=BB.pop() # вытащили "верхний" (самый большой)
    k=1 # открыли счёт
    AA=[] # новый стек для откладывания
    while BB : # перебор стека 
        x=BB.pop() # вытащили "верхний"
        if p-x<eps : AA.append(x) # "плохой" размер -> отложили в AA
        else: # подходит
            k+=1 # маркируем
            p=x # меняем размер пустого
    BB=AA[::-1] # переворачиваем стек
    rez.append(k) # добавляем результат
print(len(rez),max(rez)) # печать ИТОГОВ
        

 

#z26 Статград декабрь 2022 года
f=open('26.txt') # открытие файла с данными
sss=f.read().split('\n') # чтение всех строк из файла
print(len(sss)) # отладочная печать
print(sss[-5:])
    
eps=5 # необходимый зазор
BB=[] # список описаний контейнеров (размер, цвет)
for ss in sss[:-1]: # заполнение списка описаний
    x,y=ss.split() 
    BB.append((int(x),y))
BB.sort() # сортировка по возрастанию (отбор будем проводить с "хвоста")
rez=[] # для хранения результатов (можно без списка)
while BB : # пока стек не пуст
    pt=BB.pop() # вытащили "верхний" (самый большой)
    p,t=pt[0],pt[1] # p-размер, t - цвет
    k=1 # открыли счёт
    AA=[] # новый стек для откладывания
    while BB : # перебор стека 
        xy=BB.pop() # вытащили "верхний"
        x,y=xy[0],xy[1]
        if (p-x<eps) or (y==t) : AA.append((x,y)) # "плохой" размер или цвет -> отложили в AA
        else: # подходит
            k+=1 # маркируем
            p,t =x ,y # меняем размер и цвет пустого
    BB=AA[::-1] # переворачиваем стек
    rez.append(k) # добавляем результат
print(max(rez),len(rez)) # печать ИТОГОВ
        
 

#z26 Статград декабрь 2022 года
def lines(A,m): # вычисления числа линий с строке, заданной множеством точек
    # m - миниальное число точек, принимаемое за линию
    B=list(A) # перевод в список
    B.sort()  # сортировка списка
    B.append(-1) # добавление барьера - гарантия обработки последней линии
    n=0  # кол-во линий в строке
    j=1 # длина текущей линии
    for i in range(1,len(B)): # пробег с 2-го места (1-е учли в j=1)
        if B[i]-B[i-1]==1: j+=1 # линия продолжается
        else : # линия закончилась, обработка
            if j>=m : n+=1 # фиксация линии требуемой длины
            j=1 # сброс указателя линии
    B.clear() # очистка вспомогательного списка (необязательно)
    return n # возврат числа линий

f=open('26.txt') # открытие файла
N=int(f.readline()) # чтение числа записей
print(N) # отладочная печать
DD=[] # список для координат точек
for _ in range(N): # чтение данных
    x,y=map(int,f.readline().split()) # координаты точки
    DD.append((x,y)) # добавление в список
DD.sort() # сортировка по номерам строк
DD.append((-1,-1)) # добавление барьера остановки
print('Ok') # отладочная печать (большой объём данных)
rezK,rezL=0,0 # результаты: число линий в строке, номер строки (макс.)
nr,y=DD[0] # 1-я точка : координаты
A=set() # множество для точек строки (точки могут совпадать) 
A.add(y) # заполнение стартовой точкой
for ii in range (1,len(DD)) : # получение точек одной строки
    x,y=DD[ii] # чтение координат очередной точки
    if x==nr : # проверка совпадения номеров строк
        A.add(y) # добавление точки в множество координат
    else: # формирование координат строки завершено
        k=lines(A,3) # вычисление числа линий в строке
        if k>=rezK : # проверка и фиксация результата (учёт макс. номера ряда)
            rezK,rezL=k,nr 
        nr=x # изменение номера текущей строки
        A=set() # сброс множества координат
        A.add(y) # добавление 1-й точки
print(rezK,rezL) # вывод результатов
    
    
 

#z26 Статград март 2023 года
def lines(A,m): # вычисления макс. длины линии с строке, заданной множеством точек
    # m - максимальное число идущих подря темных точек в линии
    B=list(A) # перевод в список
    B.sort()  # сортировка списка
    B.append(-m) # добавление барьера: -m гарантия обработки последней линии
    n=0  # максимальное кол-во точек в линии
    j=1 # длина текущей линии
    for i in range(1,len(B)): # пробег с 2-го места (1-е учли в j=1)
        d=B[i]-B[i-1] # возвожное увеличение в линии
        if d-1<=m: # d-1 = числу темных точек между B[i-1] и B[i]
            j+=d # линия продолжается
        else : # линия закончилась, обработка
            n=max(n,j) # фиксация максимальной длины линии
            j=1 # сброс длины линии
    B.clear() # очистка вспомогательного списка (необязательно)
    return n # возврат максимальной длины линий в строке

f=open('26.txt') # открытие файла
N=int(f.readline()) # чтение числа записей
print(N) # отладочная печать
DD=[] # список для координат точек
for _ in range(N): # чтение данных
    x,y=map(int,f.readline().split()) # координаты точки
    DD.append((x,y)) # добавление в список
DD.sort() # сортировка по номерам строк
DD.append((-1,-1)) # добавление барьера остановки
print('Ok') # отладочная печать (большой объём данных)
rezK,rezL=0,0 # результаты: макс. длина линии в строке, номер строки (макс.)
nr,y=DD[0] # 1-я точка : координаты
A=set() # множество для точек строки (точки могут совпадать) 
A.add(y) # заполнение стартовой точкой
for ii in range (1,len(DD)) : # получение точек одной строки
    x,y=DD[ii] # чтение координат очередной точки
    if x==nr : # проверка совпадения номеров строк
        A.add(y) # добавление точки в множество координат
    else: # формирование координат строки завершено
        k=lines(A,7) # вычисление макс. длины линии в строке
        if k>=rezK : # проверка и фиксация результата (учёт макс. номера ряда)
            rezK,rezL=k,nr 
        nr=x # изменение номера текущей строки
        A=set() # сброс множества координат
        A.add(y) # добавление 1-й точки
print(rezK,rezL) # вывод результатов
    
    
 

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация