Темы --> Информатика --> Язык программирования
    Процедуры и функции(96 задач)
    Массивы(232 задач)
    Типы данных(356 задач)
    Циклы(177 задач)
    Условный оператор (if)(164 задач)
    Python(260 задач)
    Standard Template Library(2 задач)
---> 952 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 185 186 187 188 189 190 191 Отображать по:
#114319
  
Темы: [Множества]
ограничение по времени на тест
0.5 second;
ограничение по памяти на тест
256 megabytes

Места в новом трамвае в Загребе организованы в виде сетки, состоящей из \(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.75 second;
ограничение по памяти на тест
256 megabytes

Байтазар, король Байтотии организовал масштабную реформу имён своих подданных. Имена жителей Байтотии исторически часто содержат повторяющиеся фразы и Байтазар хочет с одной стороны упростить имена, а с другой, сохранить традиции повторения, а именно Байтазар хочет заменить каждое из имён в Байтотии на имя такой же длины, чтобы при этом множества периодов для старого и нового имён совпали, но имя при этом состояло только из символов «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

Страница: << 185 186 187 188 189 190 191 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест