問題一覧 > 通常問題

No.3167 [Cherry 7th Tune C] Cut in Queue

レベル : / 実行時間制限 : 1ケース 2.500秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 38
作問者 : 👑 Kazun / テスター : AngrySadEight
2 ProblemId : 10218 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-05-20 00:20:05

問題ヴィジュアル

▶ オープンで問題ヴィジュアル公開

問題文

$(1, 2, \dots, N)$ の並び替え $A$ が与えられる. また, 長さ $Q$ の整数列 $B$ があり, $B$ の第 $j$ 項 $B_j$ は $B_j = N + j$ である. つまり, $$B = (N + 1, N + 2, \dots, N + Q)$$ とする.

この $A, B$ について, 以下の $Q$ 個の処理を順に行え.

  • Type I: 1 a の形式で与えられる. $B$ の先頭の項を $b$ として, $B$ からその先頭の項を削除する. その後, $a$ の値によって, 以下のうちのどちらか一方を行う. $a$ は 「$0$ またはこのクエリが与えられた時点で $A$ に存在する整数」であることが保証される.
    • $a = 0$ のとき: $A$ の末尾に $b$ を追加する.
    • $a \neq 0$ のとき: $A$ において $a$ である項の直前に $b$ を挿入する.
    なお, このクエリが与えられる時点で, $B$ は空ではないことが証明できる.
  • Type II: 2 の形式で与えられる. $A$ から先頭の項を削除する. このクエリが与えられた時点で, $A$ は空ではないことが保証される.
  • Type III: 3 k の形式で与えられる. $A$ における第 $k$ 項を出力する. $k$ はこのクエリが与えられた時点における $A$ の長さを $\lvert A \rvert$ としたとき, $1 \leq k \leq \lvert A \rvert$ であることが保証される.

制約

  • $1 \leq N \leq 3 \times 10^5$.
  • $A$ は $(1, 2, \dots, N)$ の並び替え.
  • $1 \leq Q \leq 3 \times 10^5$.
  • 各クエリにおける制約
    • Type I
      • $a$ は「$0$ またはこのクエリが与えられた時点で $A$ に存在する整数」である.
    • Type II
      • このクエリが与えられた時点で, $A$ は空ではない.
    • Type III
      • このクエリが与えられた時点における $A$ の長さを $\lvert A \rvert$ としたとき, $1 \leq k \leq \lvert A \rvert$ である.
  • 入力は全て整数である.
  • Type III のクエリが $1$ 個以上与えられる.

入力

入力は以下の形式で標準入力から与えられる.
$N$
$A_1$ $A_2$ $\dots$ $A_N$
$Q$
${\rm Query}_1$
${\rm Query}_2$
$\vdots$
${\rm Query}_Q$
各クエリ ${\rm Query}_q$ は以下の形式で与えられる.
  • Type I
    $1$ $a$
  • Type II
    $2$
  • Type III
    $3$ $k$

出力

$Q$ 個のクエリの内, Type III のクエリが $Q_3$ 個であったとする. このとき, 出力は $Q_3$ 行からなる.

第 $r~(1 \leq r \leq Q_3)$ 行には, $r$ 番目に与えられた Type III における解答を整数で出力せよ.

最後に改行を忘れないこと.

サンプル

サンプル1
入力
5
3 5 2 4 1
7
1 2
1 0
2
3 5
2
1 6
3 1
出力
1
8

最初, $A = (3,5,2,4,1), B = (6,7,8,9,10,11,12)$ である. 各クエリでは次のように処理される.

  • (第 1 クエリ) $B$ の先頭である $b = 6$ を削除し, $A$ に対して, $a = 2$ の直前に $b=6$ を挿入する. このクエリの処理後, $A = (3,5,6,2,4,1), B = (7,8,9,10,11,12)$ になる.
  • (第 2 クエリ) $B$ の先頭である $b = 7$ を削除する. $A$ に対して, $a = 0$ であるので, $A$ の末尾に $b = 7$ を挿入する. このクエリの処理後, $A = (3,5,6,2,4,1,7), B = (8,9,10,11,12)$ になる.
  • (第 3 クエリ) $A$ の先頭の項を削除する. このクエリの処理後, $A = (5,6,2,4,1,7), B = (8,9,10,11,12)$ になる.
  • (第 4 クエリ) $A$ における第 $5$ 項は $1$ である. よって, $1$ を出力する.
  • (第 5 クエリ) $A$ の先頭の項を削除する. このクエリの処理後, $A = (6,2,4,1,7), B = (8,9,10,11,12)$ になる.
  • (第 6 クエリ) $B$ の先頭である $b = 8$ を削除し, $A$ に対して, $a = 6$ の直前に $b=8$ を挿入する.このクエリの処理後, $A = (8,6,2,4,1,7), B = (9,10,11,12)$ になる.
  • (第 7 クエリ) $A$ における第 $1$ 項は $8$ である. よって, $8$ を出力する.

サンプル2
入力
1
1
9
2
1 0
3 1
2
1 0
3 1
2
1 0 
3 1
出力
2
3
4

$A$ が空のときに, Type II のクエリが与えられることはないが, $A$ が空になることはありえる.

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。