Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить задачу на Python

Meps Mepsikovich Ученик (52), на голосовании 5 дней назад
Недавно были анонсированы уникальные командные соревнования по олимпиадному программированию. Уникальность их состоит в числе участников одной команды - их должно быть ровно
k
. В связи с этим у университета города X возникла необходимость подготовки команды для участия в новом виде соревнований.

Конечно же, сразу появились сборы по подготовке к новому виду контестов. Всего есть
n сборов, на i -е сборы университет X может отправить не более a i участников. Сила участника определяется как число сборов, которые он посетил. Сила команды определяется как минимум из сил всех её участников.

Помогите университету X и скажите, какую максимальную силу команды возможно достичь.
Пример 1
Входные данные

3 4
1 1 1
Выходные данные

0
Пример 2
Входные данные

3 2
2 1 3
Выходные данные

2
Голосование за лучший ответ
Рустам Абдрашитов Мудрец (10562) 1 месяц назад
На
 n, k = map(int, input("Введите количество сборов и участников в команде: ").split()) 
a = list(map(int, input(f"Введите максимальное количество участников на каждом из {n} сборов: ").split()))

left, right = 0, max(a)

while left < right:
mid = (left + right + 1) // 2
total_participants = sum(min(ai, mid) for ai in a)
if total_participants >= k * mid:
left = mid
else:
right = mid - 1

print(f"Максимальная сила команды: {left}")
Похожие вопросы