atcoder#ABC273E. [ABC273E] Notebook

[ABC273E] Notebook

配点 : 500500

問題文

整数列 AA とノートがあります。ノートには 10910^9 枚のページがあります。

QQ 個のクエリが与えられます。各クエリは下記の 44 種類のいずれかです。

ADD x : 整数 x を A の末尾に追加する。
DELETE : A の末尾の要素を削除する。ただし、A が空である場合は何もしない。
SAVE y : ノートの y ページ目に書かれている数列を消し、代わりに現在の A を y ページ目に書き込む。
LOAD z : A をノートの z ページ目に書かれている数列で置き換える。

はじめ、AA は空列であり、ノートのすべてのページには空列の情報が書かれています。 その初期状態から、QQ 個のクエリを与えられる順に実行し、各クエリの実行直後における AA の末尾の要素を出力してください。

なお、入出力の量が多くなる場合があるので、高速な方法で入出力を行うことを推奨します。

制約

  • 1Q5×1051 \leq Q \leq 5 \times 10^5
  • 1x,y,z1091 \leq x, y, z \leq 10^9
  • Q,x,y,zQ, x, y, z は整数
  • 与えられるクエリは問題文中の 44 種類のいずれか

入力

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

QQ

query1\mathrm{query}_1

query2\mathrm{query}_2

\vdots

queryQ\mathrm{query}_Q

出力

下記の形式にしたがい、i=1,2,,Qi = 1, 2, \ldots, Q について、ii 番目までのクエリを実行した直後の AA の末尾の要素 XiX_i を( AA が空の場合は Xi:=1X_i := -1 とする)出力せよ。

X1X_1 X2X_2 \ldots XQX_Q

11
ADD 3
SAVE 1
ADD 4
SAVE 2
LOAD 1
DELETE
DELETE
LOAD 2
SAVE 1
LOAD 3
LOAD 1
3 3 4 4 3 -1 -1 4 4 -1 4

はじめ、AA は空列、すなわち A=()A = () であり、ノートのすべてのページには空列の情報が書かれています。

  • 11 番目のクエリによって、 AA の末尾に 33 が追加され、A=(3)A = (3) となります。
  • 22 番目のクエリによって、ノートの 11 ページ目に書かれた数列が (3)(3) になります。AA は変わらず A=(3)A = (3) です。
  • 33 番目のクエリによって、 AA の末尾に 44 が追加され、A=(3,4)A = (3, 4) となります。
  • 44 番目のクエリによって、ノートの 22 ページ目に書かれた数列が (3,4)(3, 4) になります。AA は変わらず A=(3,4)A = (3, 4) です。
  • 55 番目のクエリによって、 AA がノートの 11 ページ目に書かれた数列 (3)(3) で置き換えられ、A=(3)A = (3) となります。
  • 66 番目のクエリによって、 AA の末尾の要素が削除され、A=()A = () となります。
  • 77 番目のクエリでは、AA がすでに空であるので何もしません。AA は変わらず A=()A = () です。
  • 88 番目のクエリによって、 AA がノートの 22 ページ目に書かれた数列 (3,4)(3, 4) で置き換えられ、A=(3,4)A = (3, 4) となります。
  • 99 番目のクエリによって、ノートの 11 ページ目に書かれた数列が (3,4)(3, 4) になります。AA は変わらず A=(3,4)A = (3, 4) です。
  • 1010 番目のクエリによって、 AA がノートの 33 ページ目に書かれた数列 ()() で置き換えられ、A=()A = () となります。
  • 1111 番目のクエリによって、 AA がノートの 11 ページ目に書かれた数列 (3,4)(3, 4) で置き換えられ、A=(3,4)A = (3, 4) となります。
21
ADD 4
ADD 3
DELETE
ADD 10
LOAD 7
SAVE 5
SAVE 5
ADD 4
ADD 4
ADD 5
SAVE 5
ADD 2
DELETE
ADD 1
SAVE 5
ADD 7
ADD 8
DELETE
ADD 4
DELETE
LOAD 5
4 3 4 10 -1 -1 -1 4 4 5 5 2 5 1 1 7 8 7 4 7 1