26.01 Архив пользовательских файлов
Ошибка.
Попробуйте повторить позже
Игорь Владимирович хранит на компьютере картинки и видео различного размера. Он хочет поместить как можно
больше картинок и видео на флеш-накопитель, объём которого равен Кбайт, причём так, чтобы не менее
чем половина его объёма была зарезервирована под видео. Определите максимальное количество файлов
(картинок и видео), которое Игорь Владимирович может сохранить на флеш-накопителе, и максимальный объём
сохранённого видео. Информационный объём каждой картинки не более
Кбайт, объём видео – более
Кбайт.
Входные данные:
Входные данные представлены в файле следующим образом. В первой строке записаны два числа: — количество
всех изображений и видео,
— объём флеш-накопителя. В следующих
строках находятся значения объёмов
картинок и видео в Кбайтах.
Выходные данные:
Запишите в ответе два числа: сначала общее количество картинок и видео, которые могут быть сохранены, затем — максимально возможный объём сохранённой картинки или видео.
Пример входного файла:
Ответ для приведённого примера:
Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения количества изображений и видео и объема флеш-накопителя, где они нам не
помешают. Сортируем числа по возрастанию. В условии нам сказано, что файлы, объем которых меньше либо равен 50
Кбайт, являются изображениями, тогда остальные - видео. Перенесем все видео в другой столбик, например в . Не менее
половины объема памяти флеш-накопителя ОБЯЗАТЕЛЬНО должны занимать видео, значит, найдем половину всей
памяти нашей флешки и возьмем максимальное кол-во видео, чтобы ТОЧНО заполнить это место, перенес их в столбик
. Оставшееся место заполним изображениями, имеющими минимальный объем. Изображений больше нет, а место
осталось, значит, добавляем еще видео (для удобства перенесем их в столбик
). Теперь у нас осталось 239 КБ. А вдруг
можно получить больше? Проверим это, убрав последний элемент обратно в столбик
. Теперь сумма
размеров выбранных файлов равна 523707. Проверим, нет ли у нас в столбике
числа, максимально близкого
к 581 (524288-523707=581)? У нас есть число 581!!! Значит, переносим его в столбик
и считаем ответ.
Решение 2 (Python):
file = open("2.txt") lines = file.readlines() n, k = map(int, lines[0].split()) array = list(map(int, lines[1:])) array = sorted(array) images = 0 videos = 0 i = 0 while array[i] < 50: i += 1 while videos + array[i] <= k / 2: videos += array[i] i += 1 videos += array[i] max_elem = array[i] for j in range(len(array)): if array[j] <= 50 and images + videos + array[j] <= k: images += array[j] i += 1 free_space = k - (images + videos) if free_space > max_elem: while free_space > 0: if free_space - array[i] < 0: break free_space -= array[i] max_elem = array[i] i += 1 if i >= len(array): break free_space += max_elem for j in range(len(array) - 1, i - 1, -1): print(array[j]) if array[j] <= free_space: max_elem = array[j] break print(i, max_elem)
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!