• Предмет: Информатика
  • Автор: kelmeesportsm
  • Вопрос задан 6 лет назад

Студент Шурик в поисках дополнительного дохода устроился на работу — разгружать почтовые вагоны. В напарники ему дали Федю — опытного матёрого грузчика. И если щуплый Шурик с трудом поднимает бандероли весом a килограммов, то могучий Федя способен перемещать посылки весом b килограммов. Федя и Шурик заходят в вагон, выбирают по одной коробке, которые могут унести по отдельности, и переносят их на перрон. Если вес коробки превышает b, то они её переносят вдвоем. Сколько раз Федя и Шурик войдут и выйдут из вагона (ходят они только вместе и хотят закончить работу как можно раньше)?

Входные данные
Программа получает на вход три натуральных числа: a, b (1 ≤ a < b ≤ 100) и n (1 ≤ n ≤ 105) — грузоподъемности Шурика и Феди и количество коробок в вагоне, записанных в отдельных строках. В следующих n строках записано по одному натуральному числу xi (1 ≤ xi ≤ a + b) — вес очередной коробки.

Выходные данные
Выведите одно натуральное число — ответ на вопрос задачи.

Система оценки
Решения, правильно работающее в случае, когда 1 ≤ xi ≤ a, получат не менее 20 баллов.

Решения, правильно работающее в случае, когда 1 ≤ xi ≤ b, получат не менее 40 баллов.

Пример
Ввод

Вывод

Пояснение

25
60
8
60
20
70
10
30
50
40
80

6

В примере дано: Шурик за один раз может перенести коробку весом не превышающим 25, а Федя — 60. Им необходимо переместить 8 коробок.
Первой ходкой Федя и Шурик вдвоём перенесут одну коробку весом 80, второй — 70.
Третьей ходкой Федя перенесет коробку весом 60, а Шурик — 20.
Четвёртой ходкой Федя перенесет коробку весом 50, а Шурик — 10.
Пятой ходкой Федя перенесет коробку весом 40, а Шурик будет просто идти рядом.
Последней ходкой Федя перенесет коробку весом 30. Всего 6 ходок, и можно показать, что быстрее они не управятся.


Аноним: pndexam.me/ - решения на все части

Ответы

Ответ дал: Wolfram3387
0

Ответ:

# Язык Python 3

a = int(input())

b = int(input())

n = int(input())

count = count_for_a = count_for_b = 0

for i in range(n):

   xi = int(input())

   if xi > b:

       count += 2

   else:

       if a < xi <= b:

           count_for_b += 1

       elif 1 <= xi <= a:

           count_for_a += 1

if count_for_a > count_for_b:

   print((count + (count_for_a + count_for_b) // 2 * 2 + (count_for_a + count_for_b) % 2 * 2) // 2)

else:

   print((count + max(count_for_a, count_for_b) * 2) // 2)

# gdwed

Объяснение:

Вас заинтересует