В морском порту готовятся к перевозке грузов разной массы и формы, для этого каждый груз помещают в отдельный контейнер. Контейнеры имеют разную грузоподъемность (некоторые контейнеры могут иметь одинаковую грузоподъёмность). Из-за компьютерного сбоя из общего количества контейнеров для перевозки выделили первые попавшиеся контейнеры. Напишите программу, которая поможет посчитать максимальное количество грузов, которое можно отправить в выделенных контейнерах, и максимальную массу одного отправленного груза.
Формат входных данных.
В первой строке входного файла находится
Формат выходных данных.
Два целых неотрицательных числа: максимальное количество грузов, которое можно отправить в выделенных контейнерах и максимальную массу одного отправленного груза.
Входные данные.
В первой строке входного файла находится число N — количество грузов и количество контейнеров на складе (натуральное число,
Выходные данные.
Два целых неотрицательных числа: максимальное число грузов и максимальную массу груза.
Типовой пример организации входных данных:
7
10 50
20 60
70 20
40 20
50 10
10 10
20 15
Для приведённого примера ответом является пара чисел: 6; 50.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Ответ:
Приведём решение на языке Python.
f = open("26_59853.txt")
s = f.readlines()
n = int(s[0])
g = []
k = []
for i in range(1,n+1):
a, b = map(int,s[i].split())
g.append(a)
k.append(b)
g.sort(reverse=True)
k.sort(reverse=True)
i = 0
j = 0
maxg = 0
while i < n:
if g[i]<=k[j]:
if j == 0:
maxg = g[i]
i += 1
j += 1
else:
i += 1
print(j,maxg)
Ответ: 18748 99999.
Приведём решение Ильи Крылова на языке Python.
data = open('26_59853.txt').readlines()[1:]
packages = []
containers = []
for item in data:
item = [int(i) for i in item.split()]
packages.append(item[0])
containers.append(item[1])
counter = 0
maxPackage = -1
for package in packages:
for i in range(len(containers)):
if containers[i] > package:
containers[i] -= package
counter += 1
maxPackage = max(maxPackage, package)
break
print(counter, maxPackage)

