AT_abc471_d [ABC471D] Chargers
Description
無尽蔵の差込口をもつ充電器があります。時刻 $ 0 $ にはどの差込口も空です。
バッテリーの最大容量は $ V $ です。バッテリーは差込口に挿入されているあいだ、残量が最大容量に達するまで速度 $ 1 $ で充電されます(つまり、 $ 1 $ 単位時間が経過するごとに残量が $ 1 $ 増加します)。
$ Q $ 個のクエリを順に処理してください。 $ q $ 番目のクエリは以下の形式で与えられます。なお、 $ t_1 < \dots < t_Q $ が保証されます。
- タイプ $ 1 $ ( $ 1\ t_q\ w_q $ ): 時刻 $ t_q $ に、残量 $ w_q $ のバッテリーを $ 1 $ つ差込口に挿入する。
- タイプ $ 2 $ ( $ 2\ t_q $ ): 時刻 $ t_q $ に、最も残量が多いバッテリーを $ 1 $ つ差込口から排出し、そのバッテリーの残量を出力する。どの差込口にもバッテリーが無い場合は代わりに $ -1 $ を出力する。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ Q $ $ V $ $ \mathrm{query}_1 $ $ \vdots $ $ \mathrm{query}_Q $
ここで、 $ \mathrm{query}_q $ は $ q $ 番目のクエリを表し、以下の $ 2 $ 種類のいずれかの形式で与えられる。
> $ 1 $ $ t_q $ $ w_q $
> $ 2 $ $ t_q $
Output Format
タイプ $ 2 $ のクエリの個数を $ x $ として、 $ x $ 行出力せよ。
$ k $ 行目 ( $ 1 \leq k \leq x $ ) には、 $ k $ 番目のタイプ $ 2 $ のクエリで出力するべき値を出力せよ。
Explanation/Hint
### Sample Explanation 1
$ 7 $ 個のクエリを以下の順に処理します。
- 時刻 $ 15 $ に、残量 $ 60 $ のバッテリーを挿入する。この時点で、残量 $ 60 $ のバッテリーが充電器にある。
- 時刻 $ 25 $ に、残量 $ 80 $ のバッテリーを挿入する。この時点で、残量 $ 70, 80 $ のバッテリーが充電器にある。
- 時刻 $ 30 $ の時点で、残量 $ 75, 85 $ のバッテリーが充電器にある。このうち、残量 $ 85 $ のバッテリーを排出する。
- 時刻 $ 45 $ に、残量 $ 0 $ のバッテリーを挿入する。この時点で、残量 $ 0, 90 $ のバッテリーが充電器にある。
- 時刻 $ 60 $ の時点で、残量 $ 15, 100 $ のバッテリーが充電器にある。このうち、残量 $ 100 $ のバッテリーを排出する。
- 時刻 $ 70 $ の時点で、残量 $ 25 $ のバッテリーが充電器にある。このうち、残量 $ 25 $ のバッテリーを排出する。
- 時刻 $ 80 $ の時点で、充電器に挿入されたバッテリーは無い。そのため、バッテリーの排出はしない。
### Constraints
- $ 1 \leq Q \leq 3 \times 10^5 $
- $ 1 \leq V \leq 10^9 $
- タイプ $ 1 $ のクエリにおいて、 $ 1 \leq t_q \leq 10^9 $
- タイプ $ 1 $ のクエリにおいて、 $ 0 \leq w_q \leq V $
- タイプ $ 2 $ のクエリにおいて、 $ 1 \leq t_q \leq 10^9 $
- $ t_1 < \dots < t_Q $
- 入力される値はすべて整数