atcoder#ABC241D. [ABC241D] Sequence Query

[ABC241D] Sequence Query

配点 : 400400

問題文

空の数列 AA があります。 クエリが QQ 個与えられるので、与えられた順番に処理してください。 クエリは次の 33 種類のいずれかです。

  • 1 xAAxx を追加する。
  • 2 x kAAxx 以下の要素のうち、大きい方から kk 番目の値を出力する。(kk5\bf{5} 以下) ただし、AAxx 以下の要素が kk 個以上存在しないときは -1 と出力する。
  • 3 x kAAxx 以上の要素のうち、小さい方から kk 番目の値を出力する。(kk5\bf{5} 以下) ただし、AAxx 以上の要素が kk 個以上存在しないときは -1 と出力する。

制約

  • 1Q2×1051\leq Q \leq 2\times 10^5
  • 1x10181\leq x\leq 10^{18}
  • 1k51\leq k\leq 5
  • 入力は全て整数である

入力

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

QQ

query1\text{query}_1

query2\text{query}_2

\vdots

queryQ\text{query}_Q

ii 番目のクエリ queryi\text{query}_i では、まずクエリの種類 cic_i (1,2,31,2,3 のいずれか) が与えられる。 ci=1c_i=1 の場合は xx が追加で与えられ、ci=2,3c_i=2,3 の場合は x,kx,k が追加で与えられる。

すなわち、各クエリは以下に示す 33 つの形式のいずれかである。

11 xx

22 xx kk

33 xx kk

出力

ci=2,3c_i=2,3 を満たすクエリの個数を qq として qq 行出力せよ。 j(1jq)j(1\leq j\leq q) 行目では jj 番目のそのようなクエリに対する答えを出力せよ。

11
1 20
1 10
1 30
1 20
3 15 1
3 15 2
3 15 3
3 15 4
2 100 5
1 1
2 100 5
20
20
30
-1
-1
1

query1,2,3,4\text{query}_{1,2,3,4} が終了した段階で、A=(20,10,30,20)A=(20,10,30,20) となっています。

query5,6,7\text{query}_{5,6,7} について、AA1515 以上の要素は (20,30,20)(20,30,20) です。 このうち小さい方から 11 番目の値は 202022 番目の値は 202033 番目の値は 3030 です。