Организаторам спортивных соревнований необходимо доставить как можно большее число команд в некоторый город. Для доставки используются самолёты определённой поссажировместимости. Входной файл содержит сведения о количестве человек в команде и о пассажировместимости самолётов, которые имеются в наличии.
Из соображений безопасности в одном самолёте может лететь только одна команда. Найдите способ доставить на соревнования максимально возможное число команд. Если способов несколько, то нужно выбрать такой, чтобы можно было доставить команду с максимальным числом участников.
Входные данные
В первой строке входного файла находятся два натуральных числа \(N\) \((N \leqslant 1000 )\) и \(M\) \((M \leqslant 1000 )\) — количество команд и количество самолётов соответственно. Следующие \(N\) строк содержат числа, обозначающие количество человек в команде, затем идут \(M\) строк, где указана пассажировместимость самолётов. Числа \(M\) и \(N\) могут быть не равны.
Запишите в ответе два натуральных числа: сначала максимальное количество команд, которые могут прибыть на соревнования, затем максимальную численность команды в этом случае.
Решение:
Python
f = open('26var01.txt')
N, M = map(int, f.readline().split())
teams = []
air = []
for i in range(N):
teams.append(int(f.readline()))
for i in range(M):
air.append(int(f.readline()))
teams.sort()
air.sort()
q, pt, pa = 0, 0, 0
lt, la = len(teams), len(air)
while pt < lt and pa < la:
if teams[pt] <= air[pa]:
q += 1
pt += 1
pa += 1
else:
pa += 1
pt = lt - 1
while teams[pt] > air[-1]:
pt -= 1
print(q, teams[pt])
Ответ: \(679 \,\, 194496\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене