eolymp
bolt
Try our new interface for solving problems
Məsələlər

Рисуем и вытираем

Рисуем и вытираем

\includegraphics{https://static.e-olymp.com/content/02/02d9fa3b52e82f901a596243030b866a7fb59d50.jpg} Наш хороший знакомый Микки-Маус имеет лес из \textbf{N} вершин. Микки-Маус хочет выполнять над этими вершинами следующие \textbf{3 }операции: \textbf{0} - Нарисовать ребро между двумя вершинами.\textbf{1} - Стереть последние \textbf{X} нарисованных рёбер.\textbf{2} - Дать ответ на вопрос, существует ли произвольный путь между двумя вершинами. Помогите Микки-Маусу быстро отвечать на \textbf{3}-тью оперцию. \InputFile В первой строке задано \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{10^5}) -- количество вершин, в следующей строяке число \textbf{Q} (\textbf{1} ≤ \textbf{Q} ≤ \textbf{10^5}) -- количество запросов трёх типов. В процессе обработки необходимо поддерживать число \textbf{p}, вначале оно равно \textbf{0}. Каждая запись типа \textbf{0} и \textbf{2} задаётся тройкой чисел \textbf{0 x_i y_i}, для получения номеров вершин, между которыми нужно нарисовать ребро или найти путь, задаётся следующим образом: \textbf{A_i = ((x_i + p + i) mod N) + 1, B_i = ((y_i + 1 -- p + i) mod N) + 1 (1} ≤ \textbf{A}_i\textbf{, x}_i\textbf{, B}_i\textbf{, y}_i ≤ \textbf{N).} Запросы типа \textbf{1} задаются парой чисел \textbf{1 x_i}. \textbf{x_i}_\{ \} не больше, чем количество нарисованных на данный момент рёбер. После каждого запроса типа \textbf{2},\textbf{ p} присваивается результат (\textbf{YES = 1}, \textbf{NO = 0}). \OutputFile Для каждого запроса типа \textbf{2} вывести "\textbf{YES}" (без кавычек), если существует путь между двумя вершинами, иначе "\textbf{NO}" (без кавычек), если пути не существует.
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
6
11
0 1 4
0 5 6
0 3 1
2 4 5
0 4 4
2 4 2
1 1
2 4 1
0 4 2
0 3 5
2 6 2
Çıxış verilənləri #1
NO
YES
YES
YES
Müəllif Остап Столярчук
Mənbə Дистанционная Летняя Компьютерная Школа - лето 2013 года