QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 2048 MB Total points: 100

#5110. Разделение потоков

Statistics

Система разделения потоков — это ациклическая сеть узлов, обрабатывающая конечные последовательности чисел. Есть два типа узлов (показаны на рисунке J.1):

  • Разделяющий узел получает последовательность чисел и поочерёдно распределяет их между двумя выходами. Первое число идёт на выход 1, второе — на выход 2, третье — на выход 1, четвёртое — на выход 2 и так далее в этом порядке.
  • Объединяющий узел получает две последовательности чисел и чередует их элементы, формируя единственный выход. Он содержит первое число входа 1, затем первое число входа 2, второе число входа 1, второе число входа 2 и так далее. Если одна входная последовательность короче другой, после её исчерпания оставшиеся числа более длинной последовательности просто передаются без чередования.
problem_5110_8f0aecff4e8535fa7725195ddf5f7631.png

Дельта Ganga-Brahmaputra (ESA, CC BY-SA 3.0 IGO)

problem_5110_dbad9e5fff771e7c718415a755719bc4.png

Рисунок J.1: Иллюстрация работы разделяющих и объединяющих узлов.

У всей сети один вход: последовательность положительных целых чисел $1,2,3,\ldots,m$. Можно запрашивать любой выход любого узла. Запрос определяет $k$-е число последовательности для заданного выхода и заданного $k$. Ваша задача — эффективно реализовать такие запросы.

Входные данные

Первая строка содержит три целых числа $m$, $n$ и $q$, где $m$ ($1 \le m \le 10^9$) — длина входной последовательности, $n$ ($1 \le n \le 10^4$) — число узлов, а $q$ ($1 \le q \le 10^3$) — число запросов.

Следующие $n$ строк описывают сеть, по одному узлу в строке. Разделяющий узел имеет формат S x y z, где $x$, $y$ и $z$ обозначают соответственно его вход, первый выход и второй выход. Объединяющий узел имеет формат M x y z, где $x$, $y$ и $z$ обозначают соответственно первый вход, второй вход и выход. Идентификаторы $x$, $y$ и $z$ — различные положительные целые числа. Общий вход обозначен $1$, а остальные идентификаторы входов/выходов образуют последовательность подряд идущих чисел начиная с $2$. Каждый идентификатор входа, кроме $1$, встречается как ровно один выход. Каждый идентификатор выхода встречается как вход не более одного узла.

Каждая из следующих $q$ строк описывает запрос. Он состоит из двух целых чисел $x$ и $k$, где $x$ ($2 \le x \le 10^5$) — допустимый идентификатор выхода, а $k$ ($1 \le k \le 10^9$) — индекс искомого числа в этой последовательности. Индексация начинается с $1$.

Выходные данные

Для каждого запроса $x$ и $k$ выведите в отдельной строке $k$-е число выходной последовательности с идентификатором $x$ или none, если элемента с таким индексом нет.

Примеры

Входные данные 1

200 2 2
S 1 2 3
M 3 2 4
4 99
4 100

Выходные данные 1

100
99

Входные данные 2

100 3 6
S 1 4 2
S 2 3 5
M 3 4 6
6 48
6 49
6 50
6 51
6 52
5 25

Выходные данные 2

47
98
49
51
53
100

Входные данные 3

2 3 3
S 1 2 3
S 3 4 5
M 5 2 6
3 1
5 1
6 2

Выходные данные 3

2
none
none

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.