2026/27, Кружок для начинающих, Очередь

A: Очередной фильтр

В очереди находятся карточки с записанными на них целыми числами. Программа выполняет последовательную обработку элементов.

На каждом шаге из начала очереди извлекается число. Если извлеченное число четное, оно удаляется из очереди. Если нечетное — добавляется в конец очереди.

Процесс прекращается после выполнения \(M\) операций или при полном опустошении очереди.

Формат входных данных

В первой строке записаны два целых числа \(N\) и \(M\) (\(1 \le N \le 1000\), \(1 \le M \le 10000\)) — начальное количество карточек и максимальное число операций.

Во второй строке записаны \(N\) целых чисел — начальные элементы очереди в порядке от головы к хвосту.

Формат выходных данных

Выведите элементы, оставшиеся в очереди от головы к хвосту через пробел. Если очередь становится пустой, выведите слово EMPTY.

Примеры

ВводВывод
5 4
3 4 7 8 1
1 3 7
3 3
2 4 6
EMPTY

B: Эскалатор

Эскалатор состоит из \(K\) ступеней и первоначально пуст. На каждом шаге во времени происходят следующие действия:

Задана последовательность из \(M\) шагов. Требуется найти максимальное количество людей, одновременно находившихся на эскалаторе за всё время наблюдения.

Формат входных данных

В первой строке записаны два целых числа \(K\) и \(M\) (\(1 \le K \le 1000\), \(1 \le M \le 10000\)) — длина эскалатора в ступенях и количество шагов наблюдения.

Следующие \(M\) строк содержат по одному целому числу (\(0\) или \(1\)) — входной поток людей на каждом шаге.

Формат выходных данных

Выведите одно целое число — максимальное количество людей, одновременно находившихся на эскалаторе.

Примеры

ВводВывод
3 6
1
1
0
1
1
0
2
5 4
1
1
1
1
4

C: Танцующие пары

Новый учебный год наступил и как обычно в начале года (да, в октябре) начинается подготовка к выпускному балу. Ранди придумала хитрую схему как разбить всех на пары, но текущий 11 класс 179 школы достаточно большой, и поэтому Ранди просит вас помочь с этой задачей.

В актовый зал пришли юноши и девушки. Они выстроились в две очереди. Ранди сравнивает рост первого юноши и первой девушки в очередях.

Если рост юноши строго больше роста девушки, они образуют пару и покидают очереди. В противном случае юноша перемещается в конец своей очереди. Процесс останавливается в двух случаях: либо одна из очередей полностью пустеет, либо юноши совершают полный круг без образования новых пар (текущий состав очереди юношей был проверен с первой девушкой, и никто не подошел).

Требуется найти количество образовавшихся пар, а также число оставшихся в очередях юношей и девушек.

Формат входных данных

В первой строке входных данных записаны два числа \(N\) и \(M\) (\(1 \le N, M \le 1000\)) — количество юношей и девушек соответственно (хотя нет, стандартный класс в 179))).

Во второй строке через пробел заданы \(N\) целых чисел — рост юношей.

В третьей строке через пробел заданы \(M\) целых чисел — рост девушек.

Все значения роста являются натуральными числами, не превышающими \(250\).

Формат выходных данных

Программа должна вывести три целых числа, разделенных пробелом: количество образовавшихся пар, количество оставшихся юношей и количество оставшихся девушек.

Примеры

ВводВывод
3 2
160 180 175
165 170
2 1 0
2 2
160 165
170 180
0 2 2

D: Игра в пьяницу

В игре в пьяницу карточная колода раздается поровну двум игрокам. Далее они вскрывают по одной верхней карте, и тот, чья карта старше, забирает себе обе вскрытые карты, которые кладутся под низ его колоды. Тот, кто остается без карт – проигрывает.

Для простоты будем считать, что все карты различны по номиналу, а также, что самая младшая карта побеждает самую старшую карту ("шестерка берет туза").

Игрок, который забирает себе карты, сначала кладет под низ своей колоды карту первого игрока, затем карту второго игрока (то есть карта второго игрока оказывается внизу колоды).

Напишите программу, которая моделирует игру в пьяницу и определяет, кто выигрывает. В игре участвует \(10\) карт, имеющих значения от \(0\) до \(9\), большая карта побеждает меньшую, карта со значением \(0\) побеждает карту \(9\).

Формат входных данных

Программа получает на вход две строки: первая строка содержит 5 чисел, разделенных пробелами — номера карт первого игрока, вторая – аналогично 5 карт второго игрока. Карты перечислены сверху вниз, то есть каждая строка начинается с той карты, которая будет открыта первой.

Формат выходных данных

Программа должна определить, кто выигрывает при данной раздаче, и вывести слово first или second, после чего вывести количество ходов, сделанных до выигрыша. Если на протяжении \(10^{6}\) ходов игра не заканчивается, программа должна вывести слово botva.

Примеры

ВводВывод
1 3 5 7 9
2 4 6 8 0


second 5

2 4 6 8 0
1 3 5 7 9


first 5


E: Задача Иосифа Флавия

Существует легенда, что Иосиф Флавий - известный историк первого века - выжил и стал известным благодаря математической одаренности. В ходе иудейской войны он в составе отряда из 41 иудейского воина был загнан римлянами в пещеру. Предпочитая самоубийство плену, воины решили выстроиться в круг и последовательно убивать каждого третьего из живых до тех пор, пока не останется ни одного человека. Однако Иосиф наряду с одним из своих единомышленников счел подобный конец бессмысленным - он быстро вычислил спасительные места в порочном круге, на которые поставил себя и своего товарища. И лишь поэтому мы знаем его историю…

В нашем варианте мы начнем с того, что выстроим в круг \(N\) человек, пронумерованных числами от \(1\) до \(N\), и будем исключать каждого k-ого до тех пор, пока не уцелеет только один человек.

Например, если \(N=10\), \(K=3\), то сначала умрет 3-й, потом 6-й, затем 9-й, затем 2-й, затем 7-й, потом 1-й, потом 8-й, за ним - 5-й, и потом 10-й. Таким образом, уцелеет 4-й.

Требуется написать программу, которая по заданным \(N\) и \(K\) будет определять номер уцелевшего человека.

Формат входных данных

Входные данные содержат два натуральных числа \(N\) и \(K\). Ограничения: \(N \le 500\), \(K \le 100\).

Формат выходных данных

Выведите номер уцелевшего человека.

Пример

ВводВывод
10 3

4


F: Гоблины и шаманы

Гоблины Мглистых гор очень любях ходить к своим шаманам. Так как гоблинов много, к шаманам часто образуются очень длинные очереди. А поскольку много гоблинов в одном месте быстро образуют шумную толку, которая мешает шаманам проводить сложные медицинские манипуляции, последние решили установить некоторые правила касательно порядка в очереди.

Обычные гоблины при посещении шаманов должны вставать в конец очереди. Привилегированные же гоблины, знающие особый пароль, встают ровно в ее середину, причем при нечетной длине очереди они встают сразу за центром.

Так как гоблины также широко известны своим непочтительным отношением ко всяческим правилам и законам, шаманы попросили вас написать программу, которая бы отслеживала порядок гоблинов в очереди.

Формат входных данных

В первой строке входных данный записано число \(N\) (\(1\le N\le 10^5\)) - количество запросов к программе. Следующие \(N\) строк содержат описание запросов в формате:

Формат выходных данных

Для каждого запроса типа "-" программа должна вывести номер гоблина, который должен зайти к шаманам.

Примеры

ВводВывод
7
+ 1
+ 2
-
+ 3
+ 4
-
-

1
2
3

10
+ 1
+ 2
* 3
-
+ 4
* 5
-
-
-
-

1
3
2
5
4


G: Марсианская парикмахерская

В парикмахерской работает один мастер. Он тратит на одного клиента ровно 20 минут, а затем сразу переходит к следующему, если в очереди кто-то есть, либо ожидает, когда придет следующий клиент.

Даны времена прихода клиентов в парикмахерскую в хронологическом порядке. У каждого клиента есть характеристика — степень нетерпения. Она показывает, сколько человек может максимально находиться в очереди перед клиентом, чтобы он дождался своей очереди и не ушел раньше. Если в момент прихода клиента в очереди находится строго больше людей, чем степень его нетерпения, он решает не ждать и уходит сразу. Клиент, обслуживаемый в данный момент, также считается находящимся в очереди.

Если для каких-то клиентов время окончания обслуживания совпадает со временем прихода следующего клиента, считается, что сначала заканчивается обслуживание, а затем приходит новый клиент.

Формат входных данных

В первой строке вводится натуральное число \(N\) (\(1 \le N \le 10^5\)) — количество клиентов.

В следующих \(N\) строках заданы времена прихода клиентов и степень нетерпения: часы (от \(0\) до \(16\,000\,000\)), минуты (от \(0\) до \(59\)) и степень нетерпения (неотрицательное целое число, не превосходящее \(10^5\)). Времена указаны в порядке строгого возрастания.

Формат выходных данных

Выведите \(N\) строк. В \(i\)-й строке выведите через пробел часы и минуты выхода из парикмахерской \(i\)-го клиента. Если клиент уходит сразу, время его ухода равно времени прихода.

Примеры

ВводВывод
3
10 0 0
10 1 1
10 2 1
10 20
10 40
10 2
5
1 0 100
2 0 0
2 1 0
2 2 3
2 3 0
1 20
2 20
2 1
2 40
2 3