В чем заключается ошибка алгоритма работы программы?
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])

