TUATPC 2025 Spring
コンテスト日時
2025/03/09 (Su) 13:30 - 17:00

C - あみだくえりー

ผักชี
4
s
1024
MB
100

問題文

あみだくじとは、運試しや抽選に使われる、日本でも古くから親しまれているくじ引きの一種です。

左から順に縦線 $1$、縦線 $2$、$\dots$、縦線 $N$ と番号がついた、$N$ 本の縦線からなるあみだくじがあります。すべての縦線は互いに平行であり、その上端は同じ水平線上にあります。また、各縦線の長さはすべて $M + 1\ [\mathrm{cm}]$ です。

あみだくじ.drawio

クエリが $Q$ 個与えられるので順に処理してください。クエリは次の $3$ 種類あり、以下のいずれかの形式で与えられます。

  • 1 x y : 縦線 $x$ の上端から $y\ [\mathrm{cm}]$ の位置と、縦線 $(x + 1)$ の上端から $y\ [\mathrm{cm}]$ の位置を結ぶ横線を引く。
    • このクエリが与えられる直前において、縦線 $x$ の上端から $y\ [\mathrm{cm}]$ の位置と、縦線 $(x + 1)$ の上端から $y\ [\mathrm{cm}]$ の位置に接している横線が存在しないことが保証される。
  • 2 x y : 縦線 $x$ の上端から $y\ [\mathrm{cm}]$ の位置と、縦線 $(x + 1)$ の上端から $y\ [\mathrm{cm}]$ の位置を結ぶ横線を消す。
    • このクエリが与えられる直前において、縦線 $x$ の上端から $y\ [\mathrm{cm}]$ の位置と、縦線 $(x + 1)$ の上端から $y\ [\mathrm{cm}]$ の位置を結ぶ横線が存在することが保証される。
  • 3 s : 縦線 $s$ の上端から、横線があれば必ずそれを通るというルールで下へたどったときに、最終的にたどり着く縦線の番号を出力する。

横線の端点となれるのは上端から $1, 2, \dots, M\ [\mathrm{cm}]$ の位置に限定され、横線は縦線に対して垂直にのみ引くことができます。初期状態では横線は一切引かれていません。

制約

  • $2 \le N \le 10^{9}$
  • $1 \le M \le 10^{9}$
  • $1 \le Q \le 50{,}000$
  • $1 \leq x \leq N - 1$
  • $1 \leq y \leq M$
  • $1 \leq s \leq N$
  • $1$ つ目の形式のクエリについて、クエリが与えられる直前において、縦線 $x$ の上端から $y\ [\mathrm{cm}]$ の位置と、縦線 $(x + 1)$ の上端から $y\ [\mathrm{cm}]$ の位置に接している横線が存在しない
  • $2$ つ目の形式のクエリについて、クエリが与えられる直前において、縦線 $x$ の上端から $y\ [\mathrm{cm}]$ の位置と、縦線 $(x + 1)$ の上端から $y\ [\mathrm{cm}]$ の位置を結ぶ横線が存在する
  • 入力はすべて整数

部分点

以下の制約を追加したデータセットに正解した場合は $1$ 点が与えられます。

  • $2 \le N \le 20$
  • $1 \le M \le 100{,}000$

入力

入力は以下の形式で標準入力から与えられます。

$N$ $M$
$Q$
$\mathrm{query}_1$
$\mathrm{query}_2$
$\vdots$
$\mathrm{query}_Q$

ただし、$\mathrm{query}_i$は $i$ 個目のクエリを表し、以下のいずれかの形式です。

1 x y
2 x y
3 s

出力

$3$ つ目の形式のクエリの個数を $k$ として、標準出力に $k$ 行出力してください。 $i$ 行目には $i$ 個目の $3$ つ目の形式のクエリに対する答えを出力してください。

入力例 1
5 4 8 1 1 1 1 2 2 3 1 1 3 1 3 4 2 1 1 3 1 3 3
出力例 1
3 2 1 4

$3$ 番目のクエリによるあみだくじの様子は以下の図のようになります。
あみだくじsampleRed.drawio

縦線 $1$ の上端からたどると縦線 $3$ にたどり着くので、 $3$ を出力します。

入力例 2
7 3 20 1 6 1 1 3 1 3 4 1 1 1 1 6 3 2 6 1 1 3 3 3 1 1 6 1 2 6 1 1 2 2 2 3 1 1 4 1 3 5 1 6 1 1 6 2 3 1 1 1 3 3 6 1 4 2
出力例 2
3 2 3 4 7
入力例 3
2 2 3 1 1 1 2 1 1 1 1 1
出力例 3

出力が存在しない場合もあります。

提出
C++23 (g++ 12.2.0)