В чем заключается ошибка алгоритма работы программы?

введите сюда описание изображения

import operator
n = int(input())
m = int(input())
obj = {}
i = 0
while i < n:
    a, b = input().split()
    if not b.isdigit():
        break
    else:
        obj[a] = b
    i += 1
sorted_obj = sorted(obj.items(), key=operator.itemgetter(1))
print(sorted_obj[m - 1][1])
print(sorted_obj[m - 1][0])

ошибку выдает при 2-ом тесте:

введите сюда описание изображения

не пойму никак логику - если все проходят, то 0 проходной (не минимально набранный), если частично (как в первом тесте), то по минимально набранному

исправьте пожалуйста работу алгоритма в коде


Ответы (2 шт):

Автор решения: Zhihar

а если так:

people_count = int(input())
places_count = int(input())

people = []

for _ in range(people_count):
    data = input().split()
    people.append((-int(data[1]), data[0]))

result = sorted(people)[:places_count]

print(0 if len(people) <= places_count else -result[-1][0])
print(result[-1][1])
→ Ссылка
Автор решения: n1tr0xs

Вроде работает ):

n = int(input())
m = int(input())

peoples = []
for i in range(n):
    p, s = input().split()
    peoples.append([p, int(s)])
    
peoples = sorted(peoples, key=lambda x: (-x[1], x[0]))[:m]

if n < m:
    print(0)
elif peoples[-1][1] == peoples[0][1]:
    print(peoples[-1][1]+1)
elif n == m:
    print(0)
else:
    print(peoples[-1][1])
print(peoples[-1][0])
→ Ссылка