В зале кинотеатра n рядов по m мест в каждом. Кинотеатр недавно открылся, и Вас попросили написать недостающую часть программного обеспечения для терминала продажи билетов. А именно, вам нужно написать программу для определения того, на какой ряд продать билет покупателю.
В начальный момент все места в зале свободны. Потом начинают подходить зрители. Зритель номер i хочет купить билет в ai-м ряду.
то он выберет ряд с наибольшим номером. Например, если покупатель хочет билет на полностью занятый третий ряд, а второй и четвёртый свободны, он возьмёт билет на четвёртый.
Для каждого покупателя нужно выдать ряд, на который ему будет продан билет.
Формат входных данных
В диалоге ввести целые числа n и m (1 ≤ n, m ≤ 100)— количество рядов и мест в ряду, соответственно. задано целое число k— количество покупателей,
пришедших за билетами (1 ≤ k ≤ n * m).
Далее, заполнить массив ai— номера желаемых рядов (1≤ ai ≤ n) генератором случайных чисел.
Результаты
Для каждого покупателя выведите номер ряда, на который ему будет продан билет. Если программа составлена на VBA, то вывести во второй столбец номера желаемых рядов и в третий столбец номера полученных рядов.
2. Технологии программирования (15 баллов)*
В банкомате есть купюры различных номиналов. После того, как человек отправляет запрос на выдачу ему некоторой суммы, программа, установленная в банкомате, определяет, сколько и каких купюр необходимо выдать этому человеку, чтобы выданная сумма была не больше запрошенной, но при этом максимально близка к ней. Происходит это следующим образом.
В первую очередь выдаются купюры самого большого номинала. Если эти купюры кончаются в банкомате, или если добавление еще одной купюры делает сумму больше запрашиваемой, то начинают выдаваться купюры номинала, второго по величине, и т. д. Так происходит до тех пор, пока выдаваемая сумма не будет в точности равна запрошенной, либо же пока не выяснится, что суммы не равны, но меньших купюр нет.
Вам необходимо разработать программу, обрабатывающую запросы к банкомату. Даны изначальные количества купюр каждого номинала и список запросов. Необходимо сообщить, какие суммы будут выданы по каждому запросу. При этом, естественно, нужно учитывать, что после каждого запроса число купюр в банкомате уменьшается.
Формат входных данных
Задать число n (1 ≤ n ≤ 10)— количество различных типов купюр.
Описать все возможные типы купюр: каждый тип характеризуются двумя числами ci и di (1 ≤ сi ≤ 5000, 1 ≤ di ≤ 100)— номинал купюры и количество купюр такого номинала. Типы купюр даны в порядке уменьшения номинала. Каждый следующий номинал является делителем предыдущего.
Далее задать число m (1 ≤m ≤ 100)— количество поступивших запросов. В следующих m строках описаны запросы в порядке их поступления. Каждый запрос характеризуется одним числом xi (1 ≤ xi ≤ 100000)— запрашиваемой суммой.
Результаты
вывести результаты обработки всех запросов в порядке поступления, по одному на строке. По каждому запросу выведите количество и номинал выданных купюр и сумму, выданную пользователю после обработки запроса.
*при оценке решения задач по программированию учитывается рациональное использование структур данных и алгоритмов. На тестовых примерах регистрируется время выполнения программ.
|
Похожие вопросы |
Сервис LiveExpert.org (18+) содержит информацию только для совершеннолетних 18+ и может использоваться в информационно-развлекательных целях. Используя Сервис LiveExpert.org, вы принимаете Пользовательское соглашение, Политику конфиденциальности и Политику cookie.
Эксперты Сервиса LiveExpert.org не являются членами команды Сервиса или его представителями. LiveExpert.org проверяет Экспертов и даёт допуск к работе через Сервис, однако не несёт ответственности за обещания и утверждения, указанные на страницах Экспертов и в отзывах других Пользователей об Экспертах Сервиса. LiveExpert.org не гарантирует, что информация, полученная на консультации, приведёт к ожидаемым целям и результату.
Любые консультации Экспертов или ответы на вопросы, содержащиеся в категории вопросов «Медицина» (а также и в других категориях) ни при каких условиях не являются рекламой или оказанием медицинских услуг. Сервис LiveExpert.org не несет ответственность за назначенные Экспертом препараты и рекомендует обращаться в соответствующее лечебное учреждение или к лечащему врачу для согласования возможных рисков от приема рекомендованных экспертами препаратов. Пользователь Сайта, принимая решение следовать рекомендациям Эксперта, берет на себя ответственность за возможные последствия.
LiveExpert Ltd, Mill Mall Tower, 2nd Floor, Wickhams Cay 1, P.O. Box 4406, Road Town, Tortola, British Virgin Islands