я думаю, ответы к 26-125 неверные
уже 2 программы составил, возможно, в условиях имели ввиду, что 2 минуты должно пройти после последней варки, но если поменять этот момент, то ответ ещё больше различаться будет
with open('26/data/26-125.txt') as f:
D, P = map(int, f.readline().split())
data = [ list(map(int, x.split())) for x in f.readlines() ]
data.sort(key=lambda x: (x[ 0 ], x[ 1 ]))
# print(data, '\n', D, P)
# D, P = 5, 2
# data = [
# [1, 6],
# [4, 9],
# [3, 1],
# [4, 5],
# [9, 11]
# ]
# data.sort(key=lambda x: (x[0], x[1]))
T = 50_000
tline = [ [ 0 ]*P for _ in range(T) ]
uses = [ False ]*P
sums = 0
maxc = 0
SUT = 24*60
def fillempt(t, p):
for i in range(t-1, 0-1, -1):
if tline[ i ][ p ] == 0:
tline[ i ][ p ] = 1
else:
break
def filltime(t, p, m):
global sums, maxc
n = m // 2
nmax = 0
for i in range(t, t+n):
tline[ i ][ p ] += 2
if i <= SUT:
nmax += 1
sums += 1
if nmax > maxc:
maxc = nmax
def findspace(t):
while tline[ t ].count(0) == 0:
t += 1
p = tline[ t ].index(0)
if uses[ p ]:
t+=2
return t, p
for i in range(D):
t, m = data[ i ]
if m >= 2:
t, p = findspace(t)
uses[ p ] = True
print(t, p, m)
fillempt(t, p)
filltime(t, p, m)
for i in range(1000):
print(tline[ i ])
print(sums, maxc)