luogu#P4732. [BalticOI 2015] Editor

[BalticOI 2015] Editor

题目描述

Byteasar is a programmer who works on a revolutionary text editor. In the editor there are two types of operations: one type allows to edit text in the editor, and the other type allows to undo previously performed operations. One of the innovative features of this editor is a multilevel undo operation. It works as follows.

We say that a text editing operation is an operation of level 00. An undo operation of level i(for i=1,2,...)i(for \ i = 1,2,...) undoes the last operation of level at most i1i-1 which is not undone. For instance, an undo operation of level 11 can undo only editing operations, and an undo operation of level 22 can undo editing operations as well as undo operations of level 11 (but no undo operations of greater levels).

More formally, each of the already performed operations can be in two states: active or undone. Let XX be one of the operations. Just after performing the operation XX, it is in the state active. If XX is an undo operation of level ii, we find the most recent operation in state active of level at most i1i-1 (denote it by X1X_1) and change the state of the operation X1 to undone. If X1 is also an undo operation, we must change to active the state of the operation which X1X_1 had undone (say X2X_2). We continue in the same manner: whenever the state of an undo operation XjX_j which had previously undone some operation Xj+1X_{j+1} changes, we must also change the state of the operation Xj+1X_{j+1}(which, of course, may result in changing states of further operations).

The whole chain of state modifications finishes when an editing operation is reached.

For simplicity, the current contents of text in the editor will be specified by a single integer s, called the editor state (equal to 00 at the beginning). Each editing operation specifies the editor state that it produces.

The editor state depends on the last editing operation in the state active. Help Byteasar and write a program which keeps track of the editor state.

Let us see this in action: the following table shows some operations performed by Byteasar and the editor state after performing each of them. The symbol EsE_s denotes an editing operation which changes the editor state to ss, whereas the symbol UiU_i denotes an undo operation of level ii.

0

First, Byteasar performed three editing operations. The editor state changed from 00 to 11, then to 22, and finally to 55. Next, he performed two undo operations of level 11, which undid the operations E5E_5 and E2E_2(changing their state to undone). Thus the editor state was restored to 11. The following undo operation of level 33 undid the last operation U1U_1(changing its state to undone), consequently restoring the operation E2E_2(changing its state back to active). As a result the editor state changed once again to 22. Operation U2U_2 undid the operation E4E_4,operation U1U_1 once again undid the restored operation E2E_2, the last operation U1U_1 undid the operation E1E_1, and the final operation is E1E_1.

输入格式

The first line of the input contains a positive integer nn, specifying the number of operations performed by Byteasar. The next nn lines contain descriptions of operations, one per line, each being an integer ai(nain,ai0)a_i(-n \le a_i \le n, a_i ≠ 0). If ai>0a_i> 0, then it specifies an editing operation which modifies the editor state to aia_i. If ai<0a_i< 0,then it specifies an undo operation of level ai-a_i. You can assume that for every undo operation there will be some operation in the state active of smaller level to undo.

输出格式

Your program should output nn lines. The ithi-th line should contain one integer specifying the editor state after performing the first ii operations from the input.

11
1
2
5
-1
-1
-3
4
-2
-1
-1
1
1
2
5
2
1
2
4
2
1
0
1

提示

以下子任务和评测无关,仅供参考。

0

(但是我开不了 4 个 Subtask,所以就放在一起测了)