Массивы(232 задач)
Типы данных(356 задач)
Циклы(177 задач)
Условный оператор (if)(164 задач)
Python(260 задач)
Standard Template Library(2 задач)
Места в новом трамвае в Загребе организованы в виде сетки, состоящей из \(N\) рядов, пронумерованных от \(1\) до \(N\), и двух столбцов, пронумерованных от \(1\) до \(2\). Расстояние между между сиденьями \((R_a, C_a)\) и \((R_b, C_b)\) равно евклидому расстоянию между центрами соответствующих клеток, а именно \(\sqrt{(R_a - R_b)^2 + (C_a - C_b)^2}\).
Большинство пассажиров предпочитают уединение при использовании общественного транспорта, и они всегда стараются выбрать место, которое находится как можно дальше от других пассажиров. Точнее говоря, когда пассажир садится в трамвай, он выбирает свободное место, расстояние от которого до ближайшего занятого места максимально. Если имеется более одного такого места, он всегда выбирает место с номером в меньшем ряду, а если есть несколько таких мест, он выбирает место с наименьшим столбцом. После того, как пассажир выберет место, он будет сидеть там до тех пор, пока не покинет трамвай. Если трамвай пуст, следующий пассажир, который будет входить, всегда будет выбирать место в ряду 1 и столбце 1.
Напишите программу, которая, учитывая последовательность событий и тип каждого события, определяет, куда сядет каждый из пассажиров. Трамвай изначально пуст.
События пронумерованы от \(1\) до \(M\) в том порядке, в котором они произошли. Существует два вида событий: событие типа «Е» соответствует пассажиру, входящему в трамвай, а событие типа «L» соответствует пассажиру, покидающему трамвай. Для события типа «L» также дается целое число \(P\) - оно указывает, что уходящий пассажир - это тот, который зашел в трамвай во время события \(P\).
Гарантируется, что в трамвае всегда будет хотя бы одно свободное место, когда пассажир пытается войти.
Первая строка ввода содержит два целых числа \(N\) и \(M\) \((1 \le N \le 150 000, 1 \le M \le 30 000)\), количество рядов в трамвае и количество событий. Следующие \(M\) строк содержат описание событий, \(K\)-я из этих строк содержит описание события \(K\) - либо символ «E», либо символ «L», за которым следует целое число \(P_k\) \((1 \le P_k < K)\). Гарантируется, что событие \(P_k\) относится к типу «E», и ни один пассажир не будет пытаться покинуть трамвай дважды.
Для каждого события типа «E» в том порядке, в котором они произошли, выведите строку и номер столбца места, на которое сел пассажир.
В тестах суммарной стоимости в 25 баллов выполняется \(N \le 150\) и \(M \le 150\)
В тестах суммарной стоимости в 45 баллов выполняется \(N \le 1500\) и \(M \le 1500\)
В тестах суммарной стоимости в 65 баллов выполняется \(N \le 150 000\) и \(M \le 1500\)
3 7 E E E L 2 E L 1 E
1 1 3 2 1 2 3 1 1 1
13 9 E E E E E E E E E
1 1 13 2 7 1 4 2 10 1 2 2 3 1 5 1 6 2
10 9 E E E E L 3 E E L 6 E
1 1 10 2 5 2 7 1 4 2 2 2 4 1
Байтазар, король Байтотии организовал масштабную реформу имён своих подданных. Имена жителей Байтотии исторически часто содержат повторяющиеся фразы и Байтазар хочет с одной стороны упростить имена, а с другой, сохранить традиции повторения, а именно Байтазар хочет заменить каждое из имён в Байтотии на имя такой же длины, чтобы при этом множества периодов для старого и нового имён совпали, но имя при этом состояло только из символов «0» и «1». Из всех кандидатов в новое имя Байтазар хочет выбрать лексикографически минимальное.
Натуральное число \(k\) (\(1 \le k \lt n\)) называется периодом строки \(s\) длины \(n\) тогда и только тогда, когда для любого натурального \(i\), такого что \(1 \le i \le n - k\), верно что \(s_i = s_{i + k}\).
Множество периодов для данной строки \(s\) – множество таких чисел \(i\), что \(i\) является периодом \(s\). Обозначим его за Per(\(s\)). К примеру, Per(«ABIABUABIAB») = {6, 9}, Per(«0000») = {1, 2, 3}.
Помогите Байтазару перевести имена его подданных, и, возможно, он разрешит вам сохранить ваше собственное имя!
В первой строке ввода дано единственное число \(t\) (\(1 \le t \le 20\)) - количество имён, которые необходимо перевести в соответсвии с реформой Байтазара.
В последующих \(t\) строках содержатся имена жителей Байтотии. В \(i\) строке содержится строка \(s_i\), состоящяя из заглавных латинских букв - имя \(i\) жителя до перевода.
Вы должны вывесте \(t\) строк. В \(i\) строке выведите имя, в которое превратится имя \(s_i\) после перевода.
Подзадача 1 (30 баллов): длина каждого имени не превосходит 20 (\(|s_i| \le 20\))
Подзадача 2 (70 баллов): длина каждого имени не превосходит 200000 (\(|s_i| \le 200000\))
3 ABIABUABIAB BABBAB BABURBAB
01001101001 010010 01000010