М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
inara12345
inara12345
19.11.2021 07:16 •  Информатика

На языке python!
юный биолог андрей собирается в экспедицию. у него имеется n
предметов, которые он хотел бы взять с собой. к сожалению, все их взять невозможно, поскольку в рюкзак помещается только m предметов. поняв это, андрей для каждого предмета i определил его полезность в экспедиции pi. теперь осталось выяснить, какие же предметы нужно взять, чтобы их суммарная полезность была максимальной, а их количество не превосходило m.
формат ввода:
первая строка содержит 2 натуральных числа n и m, 2 ≤ n ≤ 106, 1 ≤ m < n. вторая строка содержит n натуральных чисел pi, 1 ≤ pi ≤ 106.
формат вывода:
в единственной строке требуется в порядке невозрастания вывести полезности тех предметов, которые нужно взять.
пример:
ввод - 6 4
9 9 12 11 7 11
вывод - 12 11 11 9

👇
Ответ:
angelinaignaty1
angelinaignaty1
19.11.2021
Добрый день! Давайте решим задачу по шагам:

1. Сначала прочитаем входные данные. В первой строке заданы числа n и m, разделенные пробелом. Вторая строка содержит n чисел, разделенных пробелом, это значения полезности предметов. Примем эти значения и запишем их в переменные n, m и items:

```python
input_line1 = input().split()
n = int(input_line1[0])
m = int(input_line1[1])

input_line2 = input().split()
items = [int(item) for item in input_line2]
```

2. Создадим список indexes, который будет содержать индексы предметов в порядке невозрастания полезности:

```python
indexes = sorted(range(n), key=lambda x: items[x], reverse=True)
```

3. Создадим пустой список result, в котором будем хранить индексы предметов, которые нужно взять:

```python
result = []
```

4. Пройдемся по индексам предметов в порядке невозрастания полезности и добавим их в список result, пока его размер не превысит m:

```python
for i in indexes:
if len(result) < m:
result.append(i)
else:
break
```

5. Выведем значения полезности предметов в порядке, заданном списком result:

```python
for i in result:
print(items[i], end=' ')
```

Теперь, когда у нас есть подробное пошаговое решение, я надеюсь, что школьнику будет понятно, как работает программа. Если есть какие-либо вопросы или что-то не ясно, пожалуйста, дайте знать!
4,5(82 оценок)
Проверить ответ в нейросети
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ