A. Собираемся в Хогвартс Ограничение времени 1 секунда
Ограничение памяти 62Mb
Ввод стандартный ввод или test.in
Вывод стандартный вывод или test.out
В 1990 году Джоан Роулинг была в переполненном поезде, следовавшем из Манчестера в Лондон, когда идея о Гарри Поттере, по словам писательницы, вдруг «упала на голову». Таким образом, можно сказать, что 2020 год – юбилейный для саги о Гарри Поттере. Мы с вами тоже отметим это, решив несколько задач о героях этих книг. Каждому юному волшебнику для обучения в школе Хогвартс необходимо приобрести специальные волшебные принадлежности (магические книги, шары знаний, волшебные свитки). На эти цели банк Гринготтс выдает деньги. Для каждого школьника сумма определяется индивидуально, необходимое количество принадлежностей заранее высылается совиной почтой. Известно, что цены на волшебные предметы, следующие: магическая книга – 20 золотых галеонов, шар знаний – 10 золотых галеонов, волшебный свиток – 5 золотых галеонов. Выданную банком сумму нужно потратить полностью, так как иначе деньги сгорят. От Вас требуется написать программу, которая подбирает и выведет все возможные варианты покупок для отдельно взятого юного волшебника. Обратите внимание, что у каждого ученика школы Хогвартс должна быть хотя бы одна магическая книга. Гарантируется, что на выделенную сумму можно купить хотя бы один набор волшебных предметов, удовлетворяющий̆ всем условиям.
Формат ввода
В первой строке входного файла записано одно целое число L – выданная банком сумма в галеонах (1 ≤ L ≤ 1000). Во второй строке входного файла записано одно целое число N – количество предметов, которые нужно купить (1 ≤ N ≤ 100).
Формат вывода
В M строках выходного файла вывести по три целых числа, разделенных пробелами, – количество магических книг, шаров знаний и волшебных свитков. Каждый такой набор описывает один из вариантов покупки. Причем варианты должны быть описаны в порядке увеличения количества купленных магических книг, а при равенстве этого количества – в порядке увеличения шаров знаний и, в последнюю очередь, по увеличению количества свитков.
Можно на любом языке
(очень)грубая оценка для 100 мегабитного проводного ethernet примерно так: 100 МБит/с это примерно 10 МБайт/с (соотношение 10, хотя в байте бит по прежнему 8, это из-за всякие типовых накладных расходов, расхождения единиц измерения). 500 МБайт / 10 МБайт/с = 50 секунд.
Если чистая арифметика и пофиг на жизнь, то 500 Мбайт = (500 * 1024 * 1024) байт = (50 * 1024 * 1024 * 8) бит
Все это поделить на 100 000 000 бит/с и получится время в секундах. То есть 41,94304 секунд
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
Writeln('Максимальный четный элемент: ',a.Where(x->x.IsEven).Max);
end.
Пример
n= 15
49 -55 14 3 -29 -18 -23 -54 -82 -68 75 45 86 0 -82
Максимальный четный элемент: 86
begin
var a:=ArrRandom(ReadInteger('n='),-37,66); a.Println;
Writeln('Минимальный нечетный элемент: ',a.Where(x->x.IsOdd).Min);
end.
Пример
n= 13
-8 25 -1 40 52 -6 34 -23 44 -30 -14 -6 33
Минимальный нечетный элемент: -23