Я не думаю, что есть смысл мучить нежизнеспособного уродца. Вот работающее решение:
from itertools import islice
from functools import partial
with open("26.txt", 'r') as f:
k, n = map(int, islice(f, 2))
cs, c, j = [0] * k, 0, None
for b, e in map(partial(map, int), map(str.split, islice(f, n))):
i = next(filter(lambda j: cs[j] < b, range(k)), None)
if i is not None:
cs[i] = e; c += 1; j = i
print(c, j + 1)
Или можно так, если тебя частичная аппликация смущает:
from itertools import islice
with open("26.txt", 'r') as f:
k, n = map(int, islice(f, 2))
cs, c, j = [0] * k, 0, None
for b, e in (map(int, s.split()) for s in islice(f, n)):
i = next(filter(lambda j: cs[j] < b, range(k)), None)
if i is not None:
cs[i] = e; c += 1; j = i
print(c, j + 1)
islice с 2-мя параметрами берёт указанное количество элементов из последовательности (текстовый файл в Питоне является последовательностью строк).
Первые 2 строки преобразуем в int и помещаем в переменные k, n, в соответствии с заданием.
Следующие n строк файла рассматриваем как пары значений типа int, разделённых пробелом. По этим строкам делаем цикл, сразу помещая пары значений в переменные b, e (от begin, end).
В цикле находим первую свободную на момент b ячейку (это то, что и ты пытаешься делать в коде, только оно делается проще и короче при помощи filter).
Если нашли, то сохраняем в неё новое время освобождения, увеличиваем счётчик.
В конце выводим значения счётчика и последнего найденного номера ячейки.
И всё.
Файл целиком зачитывать не нужно, достаточно n + 2 строк.
Хранить все найденные индексы ячеек не нужно, достаточно последнего.